Was ist der beste Weg zur Überwachung eines Ordners, um zu sehen, wann eine Bilddatei hinzugefügt wurde? Dateien werden ungefähr einmal pro Minute hinzugefügt und die Benennung geht so ... image0001.jpg, image0002.jpg, image0003.jpg usw. Ich muss wissen, wann eine Datei in den Ordner geschrieben wurde, damit meine App darauf zugreifen und sie verwenden kann es.Überwachen eines Ordners für neue Dateien unter Windows
Antwort
Blick in directory change notifications.
inotify könnte Ihr Ding
FileSystemWatcher sollten in der Lage sein, dass für Sie zu tun.
Wie bereits erwähnt, ist die Verzeichnisänderung Benachrichtigungen was Sie wollen.
Ich habe auch in sie geschaut, und die Einschränkung, die ich gesehen habe, ist, dass Windows die Benachrichtigung auslöst, wenn die Datei in den Ordner geschrieben wird. Wenn die Datei groß genug ist, erhalten Sie die Benachrichtigung, bevor die Datei fertig geschrieben ist.
Check out this google search für verschiedene Lösungen zu warten, bis die Datei vollständig geschrieben
bearbeiten: Ich habe gerade gesehen, dass die Frage mit c markiert wurde ++, und ich zu einer .Net Suche verknüpft. Obwohl das, was ich bereitgestellt habe, möglicherweise nicht die richtige Sprache ist, würde ich denken, dass Sie immer noch die gleichen Probleme unter Windows haben werden, egal welches System Sie programmieren.
Änderungsmitteilungen können einige Gemeinkosten verursachen, wenn Sie NTFS haben, betrachten Sie NTFS change journals.
- Synch.variant FindFirstChangeNotification
- Asynch.variant ReadDirectoryChangesW
können Sie ein Abfrageverfahren verwenden, um die Ordner zu überwachen. Die Schleife wird beispielsweise alle 5 Sekunden ausgeführt.
Diese Methode liefert eine Liste der neuen Dateien:
List<string> files = new List<string>();
string path = @"C:\test\"; // whatever the path is
public List<string> GetNewFiles(string path)
{
// store all the filenames (only .jpg files) in a list
List<string> currentFiles = System.IO.Directory.GetFiles(path, "*.jpg");
if (currentFiles.Count() > files.Count())
{
count = newFiles.Length - files.Length;
List<string> newFiles = new List<string>();
foreach (string file in currentFiles)
{
if (!files.Contains(file))
{
newFiles.Add(file);
}
}
}
files = currentFiles;
return newFiles;
}
Dies ist die Methode, die alle 5 Sekunden und rufen Sie die vorherige Methode abfragt.
public void MonitorFolder()
{
while (true)
{
List<string> newFiles = GetNewFiles(path);
System.Threading.Thread.Sleep(5000); // 5000 milliseconds
}
}
- 1. System.IO.FileSystemWatcher zum Überwachen eines Netzwerk-Server-Ordners - Überlegungen zur Leistung
- 2. Erhalte die Berechtigungen eines Ordners von Jython unter Windows 7
- 3. Struktur eines Ordners in Windows?
- 4. Überwachen eines Prozesses in Windows
- 5. Überwachen von zugewiesenen Windows Memory-Dateien
- 6. Code zum Überwachen des Servers auf neue Dateien
- 7. Github für Windows nicht neue Dateien hinzufügen
- 8. Die Größe eines Ordners erhalten
- 9. ein Programm zum Überwachen eines Verzeichnisses unter Linux
- 10. Wie kann ich ein Verzeichnis für neu hochgeladene Dateien überwachen?
- 11. Schnellere Möglichkeit, Dateien eines Ordners als StorageFolder.GetFilesAsync() zu erhalten?
- 12. MS Web Deploy Erstellen eines neuen Ordners unter der Website?
- 13. Laradock (Container) Dateien unter Windows
- 14. Unbewegliche Dateien unter Windows XP
- 15. Android Lese-/Schreibberechtigung eines Ordners
- 16. Standardisieren eines Ordners für FileDialog in VBA
- 17. Suchen eines MIME-Typs für eine Datei unter Windows
- 18. Erste Windows für neue Dateien in Emacs von CRLF befreien
- 19. Dateien eines Ordners und seiner Ordner Kinder umbenennen
- 20. Erstellen eines Fotoalbum-Ordners in Windows Phone 8 Programmatisch
- 21. Verwenden von FileSystemWatcher zum Überwachen eines Verzeichnisses
- 22. erhalten Namen Dateien eines Mega.nz-Ordners in Nodejs
- 23. Konfigurieren von Microsoft Application Insights zum Überwachen eines Windows-Dienstes
- 24. Überwachen von Dateien mit verdrehten
- 25. Drupal Theme-Dateien außerhalb des Theme-Ordners
- 26. Parallele Windows-Dienste, die Verzeichnisänderungen überwachen
- 27. Python: Umbenennen der ersten 5 Dateien eines Ordners
- 28. Sperren von Dateien mit C++ unter Windows
- 29. Wie bekomme ich den Pfad eines Windows "speziellen Ordners" für einen bestimmten Benutzer?
- 30. Rekursives Überwachen eines HDFS-Verzeichnis-Spark-Streams
Inotify ist leider nur Linux. – JesperE
Hmm. Ich hatte den Eindruck, dass die Librarys auf verschiedene Plattformen portiert wurden. –