java.nio.file.FileSystemException bei Dateizugriff vermeiden

Snert

Neues Mitglied
Hallo zusammen,

wäre wirklich super, wenn mir hier jemand einen Tipp geben kann. Ich überwache in einer Schleife ein Verzeichnis und lese dort abgelegte CSV Dateien als String Arrays zur Weiterverarbeitung ein.

Dabei erfolgt aus der Schleife ein Aufruf:

Code:
Path quelle;
//...
while (true) {
//...
   quelle = Paths.get("D:/MeinPfad/"+event.context());
   if(Files.exists(quelle, new LinkOption[]{ LinkOption.NOFOLLOW_LINKS})) {
      datenArray = fileToArray(quelle.toString());
   }
}

Die entsprechende Methode:

Code:
   private String[] fileToArray(String filename) {
      String fileName = filename;
      List<String> list = new ArrayList<>();
      try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
         list = stream.collect(Collectors.toList());
         stream.close();
      } catch (NoSuchFileException e) {
         System.out.println(filename+" nicht gefunden");
      } catch (IOException e) {
         e.printStackTrace();
      }
//...
}

Dabei kommt es dann hin und wieder zu einer Exception:

Code:
java.nio.file.FileSystemException: D:\MeinPfad\test_table1.csv: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird.

Die Exception tritt direkt bei "try (Stream<String> stream = Files.lines(Paths.get(fileName))) {" auf. aber manchmal beim 2., manchmal dem 200. einlesen der gleichen Datei. Wie kann ich das verhindern? Ich dachte ursprünglich wenn ich den stream schließe wäre alles in Ordnung.

Danke im Voraus für jegliche Hilfe,
Snert
 

fhoffmann

Top Contributor
Wenn ich dich richtig verstehe, versuchst du zu überprüfen, ob sich Dateien in einem bestimmten Pfad geändert haben. Offensichtlich gibt es also ein anderes Programm, das diese Dateien ändert. Kann es sein, dass dieses Programm gerade eine Datei ändert (und gesperrt hat), während du versuchst, die Datei zu lesen?
 

truesoul

Top Contributor
Hallo.

Also du die Klasse File hat Methoden die du nutzen könntest wie z. B

canRead(), canExecute(), canWrite()

Oder die Files Klasse hat auch solch Methoden.

Files.isExecutable, Files.isReadable, Files.isWritable

Grüße
 

Snert

Neues Mitglied
Sorry, konnte leider vorher nicht gucken. Erstmal danke für die Antworten. Einen Watchservice habe ich eigentlich auch im Einsatz (da war der Code Ausschnitt doof gewählt) aber vermutlich dann noch nicht vernünftig - das lese ich mir erstmal in Ruhe durch.

@HarleyDavidson: Danke für den Link!

@fhoffmann: Genauer gesagt werden im überwachten Verzeichnis CSV Dateien abgelegt. Diese werden zur Weiterverarbeitung eingelesen und die Ursprungsdatei verschoben/archiviert. Andere Programme kann ich eigentlich ausschließen, außer irgendwelche Windows Prozesse die ich nicht auf dem Zettel habe.

@truesoul: Du würdest also eher vorab prüfen und dann gegebenenfalls verzögern?

Nur mal so zusammengefasst? Die fileToArray-Methode scheint hier nicht das Problem zu sein, sondern tendenziell _irgendwelche_ externen Zugriffe?

Danke nochmal!
 

fhoffmann

Top Contributor
Wer stellt die csv-Dateien dort denn bereit?
Wenn es ein Programm ist, das die Dateien bereitstellt, wäre es eine übliche Lösung, dass das Programm die Dateien mit einer anderen Dateiendung (z.B. ".csv_temp") in das Verzeichnis kopiert und sie erst nach dem Kopieren in ".csv" umbenennt.
Dein Programm würde sich nur für Dateien mit der Endung ".csv" interessieren.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
KeinJavaFreak Erste Schritte Java "Executable Jar File" nicht vorhanden Java Basics - Anfänger-Themen 1
A java jar-File Java Basics - Anfänger-Themen 1
H Java file nicht gefunden Java Basics - Anfänger-Themen 5
Dimax In Java File (nicht in Java Projekt) mysql Driver importieren Java Basics - Anfänger-Themen 3
T Java Executable jar file funktioniert nicht Java Basics - Anfänger-Themen 4
Ghostman1711 Itext PDF print File gelockt by Java Java Basics - Anfänger-Themen 15
H Best Practice java.io.File oder java.nio.Path Java Basics - Anfänger-Themen 5
T Java Projekt als runnable jar file exportieren inklusive csv Dateien Java Basics - Anfänger-Themen 4
M Java Class File lässt sich nicht ausführen Java Basics - Anfänger-Themen 3
C ausgabe Baumstruktur java.io.File Java Basics - Anfänger-Themen 2
J WAVE-file mit Java Sound erstellen Java Basics - Anfänger-Themen 9
S Compiler-Fehler java.lang.SecurityException: Invalid signature file digest for Manifest main attributes Java Basics - Anfänger-Themen 5
S java.io.file Appdata-PATH Java Basics - Anfänger-Themen 5
B Java GUI in anderer File aufrufen Java Basics - Anfänger-Themen 2
M isHidden() von java.io.File liefert immer true in Windows Java Basics - Anfänger-Themen 3
c_sidi90 Java File an Mediaplayer übergeben Java Basics - Anfänger-Themen 7
C Datei kopieren - Erweiterung java.io.File Java Basics - Anfänger-Themen 2
J Java Anfänger .jar file erstellen Java Basics - Anfänger-Themen 9
T Java Output File Gliedern Java Basics - Anfänger-Themen 5
Developer_X Java File listet den Ordner, in dem sich die Datei befindet Java Basics - Anfänger-Themen 7
O Java- File in Shell/Terminal/etc. öffnen Java Basics - Anfänger-Themen 8
G java.io.File problem Java Basics - Anfänger-Themen 5
L Filenotfound Exception bei java.io obwohl file existiert Java Basics - Anfänger-Themen 10
B Jar file java applet Java Basics - Anfänger-Themen 12
G Jar-File erzuegen, das Code a verschiedenen Java Versionen? Java Basics - Anfänger-Themen 4
H java.io.file aber wie siehts mit Folder aus? Java Basics - Anfänger-Themen 8
cowabunga1984 Jar-File aus Java-Anwendung starten Java Basics - Anfänger-Themen 7
A java application to exe-file, executable under windows Java Basics - Anfänger-Themen 2
S Daten in eine Variable in einem anderen Java File schreiben Java Basics - Anfänger-Themen 10
E java.io - File: delete funktioniert nicht Java Basics - Anfänger-Themen 5
K *.java File in JSP File verwenden Java Basics - Anfänger-Themen 7
M HashCode von java.io.File - Wurde die Datei geändert ? Java Basics - Anfänger-Themen 2
S Java-Programm mit .bat File starten Java Basics - Anfänger-Themen 8
M Java VM file encoding von CP1252 auf ISO-8859-1 ändern Java Basics - Anfänger-Themen 1
B File Header mit Java einlesen. Java Basics - Anfänger-Themen 9
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2
G Help me in the Java Program Java Basics - Anfänger-Themen 2
L Java- Vererbung Java Basics - Anfänger-Themen 4
LimDul Suche Java Stream Tutorial Java Basics - Anfänger-Themen 2
_so_far_away_ Ich möchte Java lernen Java Basics - Anfänger-Themen 11
benny1993 Java Programm erstellen für ein Fußball-Turnier Java Basics - Anfänger-Themen 3
M Datentypen While-Schleife eine Java Methode erstellen Java Basics - Anfänger-Themen 3
V Bild per Java Script austauschen Java Basics - Anfänger-Themen 7
MoxMorris this Keyword in Java Java Basics - Anfänger-Themen 14
D Wie kann man in Java nach Arrays auf Duplikate prüfen Java Basics - Anfänger-Themen 12
wolei JAVA Zeitdifferenz feststellen. Java Basics - Anfänger-Themen 4
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
wolei Java generic interface in a generic class Java Basics - Anfänger-Themen 6
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Circle.java:5: error: <identifier> expected Java Basics - Anfänger-Themen 2
julian-fr Wie kann ich am besten Java lernen? Java Basics - Anfänger-Themen 17
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
lrnz22 Java-Basics-Aufgabe Java Basics - Anfänger-Themen 8
R Java kann nicht installiert werden Java Basics - Anfänger-Themen 8
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
G In ein java Dokument Ton einbinden Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben