Hallo,
ich habe folgendes Problem:
Ich möchte eine Datei lesen, wobei ich aber nicht weiss ob diese Datei schon vollständig geschrieben ist, da sie von einer anderen Applikation gerade geschrieben werden kann.
Beispiel:
File myFile = new File("C:\myUnDefFile.unDevExt");
und ich bräuchte so etwas:
static boolean isComlete(myFile){...} //welches ein true zurückliefert wenn das File vollständig geschrieben ist.
Diese Datei ist an wenig Merkmalen festzumachen. ZB ist vorher nicht klar wie gross sie ist, welchen Typ sie hat usw.
Ich habe schon eine ganze Menge an möglichen Sachen ausprobiert, zB
- Ob die Datei sich locken lässt:
Die Datei lässt sich locken, dabei wird aber der andere Prozess abgebrochen. Auf die andere Applikation habe ich auch keinen Einfluss.
- ob sich die Grösse ändert
Hier läuft das sicherlich in einem Thread ... die Dateigroessen sind identisch, obwohl das File grad geschrieben wird und sich deshalb gerade zwangsläufig vergrössert.
USW.
All das funktioniert nicht
Hat jemand eine Idee was man da machen könnte? Wäre für Hilfe sehr dankbar

ich habe folgendes Problem:
Ich möchte eine Datei lesen, wobei ich aber nicht weiss ob diese Datei schon vollständig geschrieben ist, da sie von einer anderen Applikation gerade geschrieben werden kann.
Beispiel:
File myFile = new File("C:\myUnDefFile.unDevExt");
und ich bräuchte so etwas:
static boolean isComlete(myFile){...} //welches ein true zurückliefert wenn das File vollständig geschrieben ist.
Diese Datei ist an wenig Merkmalen festzumachen. ZB ist vorher nicht klar wie gross sie ist, welchen Typ sie hat usw.
Ich habe schon eine ganze Menge an möglichen Sachen ausprobiert, zB
- Ob die Datei sich locken lässt:
Code:
RandomAccessFile raf = new RandomAccessFile(file.getAbsolutePath(), "rw");
lock = raf.getChannel().tryLock();
Die Datei lässt sich locken, dabei wird aber der andere Prozess abgebrochen. Auf die andere Applikation habe ich auch keinen Einfluss.
- ob sich die Grösse ändert
Code:
File myFile01 = new File(thefileName);
Thread.sleep(200);
File myFile02 = new File(myFile01.getAbsolutePath());
int length01 = myFile01.length();
int length02 = myFile02.length();
if(length02>length01){
//file wird geschrieben
}
Hier läuft das sicherlich in einem Thread ... die Dateigroessen sind identisch, obwohl das File grad geschrieben wird und sich deshalb gerade zwangsläufig vergrössert.
USW.
All das funktioniert nicht
Hat jemand eine Idee was man da machen könnte? Wäre für Hilfe sehr dankbar