java.io.listFiles()

gbunge

Aktives Mitglied
Hallo Javafans,

ich weiss nicht mehr weiter, hoffentlich kann
kann mir jemand helfen.
Mein Bankprogramm funktioniert nicht mehr so,
wie ich es mal geschrieben habe und bis heute
habe ich nicht rausgefunden woran es liegt.
Die Kontoauszüge lade ich mir von der Bank runter.
Da die aber immer einen anderen Namen haben, wegen des
Datums im Namen, kann ich sie nicht einfach benennen um sie
zu lesen.
Ich lese also den Ordner mit 'java.io.listFiles()' und suche
dann die Datei, die einen konstanten Namensteil hat, mit
'if( filename.contains("namensteil"))'.
Das hat jahrelang funktioniert, doch nun nicht mehr.
Dazu muss ich sagen, dass ich ein Alias der jar-Datei auf
den Desktop lege und das Programm durch anklicken starte.
Die Liste ist immer leer, wenn ich es so mache.
Starte ich das Programm aber in Netbeens, oder von der
Konsole, dann läuft alles wie es soll.
Gruss GBunge
<code>
package filetest;

import java.awt.*;
import java.io.*;
import javax.swing.*;

public class FileTest extends JFrame {

final private int weit, hoch;
private JTextArea edi;
private String path;

public FileTest() {
weit = 900; hoch = 500;
path = "/Users/gb/Downloads";
init();
}
private void init(){
setBounds( 0, 30, weit, hoch );
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout( new BorderLayout());
// TextArea
edi = new JTextArea();
edi.setPreferredSize( new Dimension( weit, hoch - 50 ));
add( "Center", edi );
// Button
JButton bu = new JButton("EXIT");
bu.addActionListener( l -> { exit();});
add("South",bu );
setVisible( true );
readData();
}
private void exit(){ System.exit(0);}
private void readData() {
File ff;
File[] list = null;
// Fileliste im Download-Ordner
ff = new File( path );
list = ff.listFiles();
edi.append("\n Liste: "+list.length+"\n");
for( File f : list ) {
edi.append( "\n "+f.getName());
}
}

public static void main(String[] args) {
new FileTest();
}
}
</code>
 
Auf Grund des /Users/gb/.. Pfades nehme ich mal an, dass Du mit macOS arbeitest. Das Problem könnte also schlicht sein, dass Java kein Recht hat, auf Deine Dateien zuzugreifen. Daher werden keine Dateien angezeigt. Netbeans hast Du die Rechte gegeben, daher funktioniert es, wenn es als Childprozess von Netbeans ausgeführt wird.

Das wäre so meine Vermutung, wenn ich das so alles richtig gelesen habe. Und die Einstellung wäre dann in Settings -> Datenschutz & Sicherheit -> Festplattenvollzugriff
Und da wäre dann dem Java Vollzugriff zu geben. Aber da dies dann für alle Java Programme gilt, weiss ich nicht, ob das so gut ist. Dann kann es einfacher sein, dass man eine app erzeugt und diese startet statt einer jar Datei. Dann müsste man nur der App die Rechte geben.
 
Klingt plausibel. Da der Befehl leider keine Zugriffsverletzung wirft, kann man nur spekulieren, warum null geliefert wurde.
Am besten vorher mal mit ff.exists(), ff.isDirectory() und ff.canRead() prüfen, entsprechend etwas ins Log schreiben.
 

Neue Themen


Zurück
Oben