Ich schreibe einen Windows-Dienst, der eine Datei aus einem FTP-Ordner auf dem lokalen Computer nehmen und die Daten in dieser Datei analysieren und an eine externe Quelle senden muss. Die Datei wird zu einem bestimmten Zeitpunkt von einer anderen Partei in den FTP-Ordner hochgeladen, und ich kann nicht vorhersagen, wann die Datei hochgeladen wird. Ich brauche den Dienst, um den FTP-Ordner scannen und erkennen zu können, wenn die Datei kürzlich auf den Server hochgeladen wurde, und den Parsing-Prozess zu starten.Wie kann ich feststellen, wenn eine Datei kürzlich in einem FTP-Ordner überschrieben wurde?
Ich brauche etwas wissen, wenn es in .NET eine Möglichkeit gibt zu erkennen, wenn eine Datei in ein Verzeichnis abgelegt wurde.
Es gibt eine ähnliche Frage in SO über diese here, aber es war nicht in Bezug auf das Schreiben eines Windows-Dienstes. Außerdem schien die Lösung darin zu bestehen, das Verzeichnis selbst zu überwachen, aber ich habe diese Idee mit der DirectoryInfo-Klasse getestet und es funktioniert nicht, wenn ich die LastWriteTime-Eigenschaft anschaue. Die Uhrzeit des Verzeichnisses ändert sich nicht, wenn ich eine Datei im Verzeichnis kopiere und ersetze.
Hinweis: Ich kann mich nicht auf die Zeitstempel für die Erstellung/Änderung in der Datei verlassen, da ich nicht weiß, wie die andere Partei diese Dateien generiert.
Danke AllenG, aber wie würde ich herausfinden, ob die Datei vollständig geschrieben ist? Würde ich das aus der FileInfo-Klasse erfassen? – Joseph
Die Art, wie ich es mache, ist der Versuch, die Datei mit FileSharing.None zu öffnen, um zu sehen, ob die FTP-Transaktion noch versucht, in die Datei zu schreiben. Sobald Sie es auf diese Weise öffnen können, sollten Sie gut gehen. Es mag einen besseren Weg geben, aber wenn, dann weiß ich es nicht. – AllenG