Jaki jest najlepszy sposób monitorowania folderu, aby zobaczyć, kiedy plik obrazu został do niego dodany? Pliki są dodawane mniej więcej raz na minutę, a nazwa wygląda tak ... image0001.jpg, image0002.jpg, image0003.jpg itd. Muszę wiedzieć, kiedy plik został zapisany w folderze, aby moja aplikacja mogła uzyskać dostęp do to.Monitorowanie folderu pod kątem nowych plików w systemie Windows
Odpowiedz
Sprawdź w directory change notifications.
inotify może być twoja sprawa
FileSystemWatcher powinien być w stanie zrobić to za Ciebie.
Jak wcześniej wspomniano, powiadomienia o zmianie katalogu są tym, czego potrzebujesz.
Zajrzałem także do nich, a zastrzeżenie, które widziałem, to to, że okna będą uruchamiały powiadomienie, gdy plik zacznie być zapisywany w folderze. Jeśli plik jest wystarczająco duży, otrzymasz powiadomienie, zanim plik zostanie zapisany.
Wyjazd this google search różnych rozwiązań czeka, aż plik zostanie całkowicie napisany
Edit: Właśnie zobaczyłem, że pytanie zostało oznaczone tagiem C++, i związana z wyszukiwaniem .Net. Chociaż to, co podałem, może nie być właściwym językiem, myślę, że nadal będziesz mieć te same problemy w systemie Windows, niezależnie od tego, z którym systemem kodujesz.
Zmiana notatek może spowodować pewne obciążenie, jeśli masz NTFS, rozważ NTFS change journals.
- Synch.variant FindFirstChangeNotification
- Asynch.variant ReadDirectoryChangesW
Można użyć metody odpytywania, aby monitorować folder. Pętla będzie wykonywana co 5 sekund, na przykład.
Metoda ta zwraca listę nowych plików:
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;
}
Jest to metoda, która będzie odpytywać co 5 sekund i wywołać poprzednią metodę.
public void MonitorFolder()
{
while (true)
{
List<string> newFiles = GetNewFiles(path);
System.Threading.Thread.Sleep(5000); // 5000 milliseconds
}
}
- 1. Monitorowanie plików mapowanych w pamięci Windows
- 2. Ukrywanie plików ukrytych pod Linuksem w systemie Windows
- 3. Rysowanie płótna HTML5 z kątem pod kątem
- 4. Filtrowanie tabulatorów pod kątem
- 5. Jak skanować kartę SD pod kątem konkretnego rozszerzenia plików w systemie Android?
- 6. Automatyczne sprawdzanie plików Java pod kątem zgodności z kodowaniem standardowym
- 7. Monitorowanie modyfikacji katalogu
- 8. Jakie jest znaczenie folderu ProgramData w systemie Windows?
- 9. Sprawdź JSONArray pod kątem określonej wartości
- 10. Monitorowanie plików/folderów
- 11. jak monitorować pełne drzewo katalogów pod kątem zmian w systemie Linux?
- 12. Selektor plików w systemie Windows Phone 8.1
- 13. tworzeniu nowych plików jednocześnie
- 14. Uzyskiwanie ścieżki folderu tymczasowego użytkownika w systemie Windows
- 15. .gitignore nie rozpoznaje symbolu wieloznacznego mojego folderu w systemie Windows
- 16. monitorowanie zmian plików C++ linux
- 17. Jak wypełnić warstwę CAShapeLayer nachylonym pod kątem?
- 18. Jak działa odpytywanie pliku pod kątem zmian?
- 19. Formatowanie instrukcji if pod kątem czytelności
- 20. Sprawdź NSURL pod kątem UTI/typ pliku
- 21. Jak przetestować pod kątem String = Enum.Value?
- 22. Prosta, brzydka funkcja umożliwiająca orientację pod kątem.
- 23. Menu pod kątem CSS z gradientem pod listą rozwijaną
- 24. ładowanie nowych plików w katalogu
- 25. SVG - rozmiaru prostokąta umieszczone pod kątem
- 26. Ocena Androida pod kątem dopasowania do szerokości
- 27. check_box_tag domyślnie sprawdzany pod kątem zapamiętania
- 28. Animacja iOS Animacja obrotu pod kątem
- 29. SSH w systemie Linux: wyłączanie sprawdzania klucza hosta pod kątem hostów w podsieci lokalnej (znane_hosty)
- 30. jak sprawdzić plik ikony okna pod kątem jakości obrazu
Inotify ma tylko Linux, niestety. – JesperE
Hmm. Miałem wrażenie, że biblioteki zostały przeniesione na różne platformy. –