isFile()=false obwohl File vorhanden

xrax

Erfahrenes Mitglied
Hallo zusammen,

mein Code verarbeitet tausende von XML-Files täglich.

Ab und an, in ca. 0,2% der Fälle, bekomme ich aber die Meldung das das File nicht vorhanden wäre.

Ich erfrage das einfach mit:

Code:
if(new File(path).isFile()){
//doSomething
}else{//send error}

Das File ist aber vorhanden. Nun stellt sich für mich die Frae ob an meiner Abfrage irgendwas nicht stimmt oder viellleicht am FileSystem ? Linux version 2.6.32-5-amd64 (Debian 2.6.32-48squeeze1) ist der genutzte Server.

Wäre dankbar wenn mir jemand bei diesem Rätsel helfen könnte.

Beste Grüße
xrax
 

Der Wolf

Erfahrenes Mitglied
Hallo,

sind die Pfade bei denen dieser Fehler auftritt denn immer die gleichen? Oder unterscheidet sich das bei verschiedenen Durchläufen wo er auftritt?

Gruß,
Wolf
 

Bratkartoffel

gebratene Kartoffel
Premium-User
Hi,

würde zur Fehlersuche eine Debug Ausgabe einbauen. Wichtig hierfür sind u.a.:
- absoluter Dateipfad
- Existiert die Datei? (File.exists() glaub ich)
- Zugriffsrechte
- Besitzer / Gruppe

Welche Java-Version läuft eigentlich? Mit welcher wurde das Programm gebaut?

Würde mal darauf tippen, dass der Benutzer, mit dem das Programm läuft, keine Rechte auf einzelne Dateien hat.

Grüße,
BK
 

xrax

Erfahrenes Mitglied
Hi,

würde zur Fehlersuche eine Debug Ausgabe einbauen. Wichtig hierfür sind u.a.:
- absoluter Dateipfad
- Existiert die Datei? (File.exists() glaub ich)
- Zugriffsrechte
- Besitzer / Gruppe

Welche Java-Version läuft eigentlich? Mit welcher wurde das Programm gebaut?

Würde mal darauf tippen, dass der Benutzer, mit dem das Programm läuft, keine Rechte auf einzelne Dateien hat.

Grüße,
BK

Danke euch beiden für die Antwort.

In dieses Verzeichnis werden von einem Servlet Dateien abgelegt. Immer gleich. Nur das eben manchmal eine Datei nicht gefunden wird. Die anderen Dateien schon.

Glaube nicht das es am Code liegt. Ausser vielleicht die Prüfung über File.exist(). Aber isFile() ist doch prinzipiell das gleiche.

Grüße
xrax
 

vfl_freak

Premium-User
Moin,

Ausser vielleicht die Prüfung über File.exist(). Aber isFile() ist doch prinzipiell das gleiche.
na ja, sagen wir mal ähnlich, wie ein Blick in die API zeigt ...

public boolean isFile()

Tests whether the file denoted by this abstract pathname is a normal file. A file is normal if it is not a directory and, in addition, satisfies other system-dependent criteria. Any non-directory file created by a Java application is guaranteed to be a normal file.
Where it is required to distinguish an I/O exception from the case that the file is not a normal file, or where several attributes of the same file are required at the same time, then the Files.readAttributes method may be used.

Returns:
true if and only if the file denoted by this abstract pathname exists and is a normal file; false otherwise

public boolean exists()
Tests whether the file or directory denoted by this abstract pathname exists.
Returns:
true if and only if the file or directory denoted by this abstract pathname exists; false otherwise

Gruß
Klaus
 

xrax

Erfahrenes Mitglied
Hi all,

hatte gerade einen Anruf von meinem Admin.
Wie er sagt werden die Files in einem StorageSystem gespeicher welches möglicherweise den Anforderungen nicht nachkommt. Er wird nun eine Umstellung vollziehen und hoffen das es dann zuverlässiger klappt.

Beste Dank für Eure Tipps.

CU
xrax