Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich überwache mittels eines kleinen Java-Programms einen FTP-Ordner in dem Nutzer Dateien hochladen. Etwa so:
Code:
while (true){
f = new File( dir );
children = f.list();
for (int i=0;i<children.length;i++){
... HIER??? ....
}
try{
sleep(150000);
}catch(InterruptedException e){}
}
Ich habe nur das Problem, das wenn die Prüfung läuft sich ja gerade noch eine Datei im "UploadModus" befindet, sprich noch nicht komplett übertragen wurde. Wie kann ich HIER??? prüfen ob die Datei schon komplett ist oder ob in diese noch geschrieben wird?
Die Frage wird wohl sein: Wer sagt denn, dass die Datei "fertig" ist? Ich würde für dieses Problem als Schreibender vor Beginn des Hochladens eine spezielle 0-Byte-Datei anlegen. Wenn der Schreibende fertig ist, löscht er diese Datei wieder.
du könntest versuchen die datei mit exklusiven schreibrechten zu öffnen, wnen noch jemand anderes die datei zum schriebne offen hat sollte das dann fehl schlagen. geht iirc mit FileChannel
Leider kann ich als "Lesender" den schreibenden nicht sagen was Sie tun sollen. Auch wie die Datei dort hingelangt (copy vom FileSystem) oder FTP transfer, etc. liegt nicht in meinem Machtbereich ;-)
Das Problem ist das ich einen Read/WriteLock auf die Datei setzten kann, obwohl ein anderes Programm (in meinem Test: ein anderes Java Proggy) gerade in die Datei schreibt. Das führt dann dazu, dass mein Schreibprogramm nicht mehr schreiben kann. Was ja nicht Sinn der Sache ist.
Code:
Exception in thread "main" java.io.IOException: Der Prozess kann nicht auf die Datei zugreifen, da ein anderer Prozess einen Teil der Datei gesperrt hat
at java.io.FileOutputStream.write(Native Method)
at SchreibeInDatei.main(SchreibeInDatei.java:13)
du könntest versuchen die datei mit exklusiven schreibrechten zu öffnen, wnen noch jemand anderes die datei zum schriebne offen hat sollte das dann fehl schlagen. geht iirc mit FileChannel
Das moven der Datei ist auch nicht Idiotensicher, weil die Operation nicht atomar ist. Sperrern wird nicht immer unterstütz.
Bei "eigenen" Dateien könnte man sich auf einen Endemarker einigen, aber das ist in der Regel auch nicht praktikabel.
Ein Kriterium könnte sein, wenn sich die Dateigröße in einem bestimmten von dir definierterm Zeitraum nicht mehr geändert hat, ist die Datei wohl fertig geschrieben.