¿Cuál es la mejor manera de supervisar una carpeta para ver cuándo se ha agregado un archivo de imagen? Los archivos se agregan aproximadamente una vez por minuto y los nombres son así ... image0001.jpg, image0002.jpg, image0003.jpg, etc. Necesito saber cuándo se ha escrito un archivo en la carpeta para que mi aplicación pueda acceder y usar eso.Supervisión de una carpeta para archivos nuevos en Windows
Respuesta
Mire en directory change notifications.
inotify podría ser su cosa
FileSystemWatcher debe ser capaz de hacer eso por usted.
Como se mencionó anteriormente, las notificaciones de cambio de directorio es lo que desea.
Los he examinado también, y la advertencia que he visto es que las ventanas dispararán la notificación cuando el archivo se empiece a escribir en la carpeta. Si el archivo es lo suficientemente grande, recibirá la notificación antes de que el archivo haya terminado de escribirse.
Salida this google search para diversas soluciones para esperar hasta que el archivo está completamente escrito
Editar: Acabo de ver que la cuestión fue etiquetado con C++, y vinculado a una búsqueda .Net. Aunque lo que proporcioné puede no ser el idioma correcto, creo que seguirá teniendo los mismos problemas en Windows sin importar con qué sistema esté codificando.
Las alteraciones en el cambio pueden causar cierta sobrecarga, si tiene NTFS, considere NTFS change journals.
- Synch.variant FindFirstChangeNotification
- Asynch.variant ReadDirectoryChangesW
Usted puede utilizar un método de sondeo para supervisar la carpeta. El ciclo se ejecutará cada 5 segundos, por ejemplo.
Este método devuelve una lista de los archivos nuevos:
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;
}
Este es el método que va a sondear cada 5 segundos y llame al método anterior.
public void MonitorFolder()
{
while (true)
{
List<string> newFiles = GetNewFiles(path);
System.Threading.Thread.Sleep(5000); // 5000 milliseconds
}
}
- 1. Supervisión de un directorio para la creación de archivos nuevos sin FileSystemWatcher
- 2. Windows: secuencia de comandos de supervisión de archivos (Batch/VBS)
- 3. Vim (Windows): los nuevos archivos de ayuda no funcionan
- 4. Supervisión del tamaño del directorio de Windows
- 5. Supervisión de cambios de archivos en C#
- 6. ¿Qué filtro de FileSystemWatcher necesito usar para encontrar nuevos archivos?
- 7. C#: Supervisión de archivos copiados o movidos con FileSystemWatcher
- 8. Obtener archivos en una carpeta
- 9. Git: cómo obtener todos los archivos modificados y nuevos en una carpeta o zip?
- 10. URL de una carpeta compartida de Windows
- 11. lista de archivos Ponerse en una carpeta en C
- 12. Mostrar modificación (archivos nuevos y editados) desde una fecha determinada
- 13. Cambiar todas las extensiones de archivos en una carpeta con un comando en Windows
- 14. encontrar archivos en una carpeta usando Java
- 15. Rellene archivos en un cuadro de lista desde una carpeta en formularios de Windows C
- 16. Filtrar archivos en una carpeta muy grande
- 17. Buscar todos los archivos en una carpeta
- 18. Agregue automáticamente archivos a SVN dentro de una carpeta específica
- 19. Incluyendo nuevos archivos en SVN diff
- 20. Monitorear la carpeta para nuevos archivos usando unix ksh shell script o perl script y desencadenar script perl
- 21. cargar nuevos archivos en el directorio
- 22. Recuento de archivos de una carpeta
- 23. Rubí lista de archivos excluir una carpeta
- 24. Windows API para extraer archivos zip?
- 25. VS 2010: deshabilitar Fileheader para nuevos archivos de clase
- 26. Detección de nuevos elementos nuevos en una fuente RSS
- 27. Obteniendo el número de archivos en una carpeta en java
- 28. Archivo por lotes para copiar archivos de una carpeta a otra carpeta
- 29. java 7 preguntas de supervisión del directorio
- 30. git: Lista de los nuevos archivos sólo
Inotify es solo para Linux, desafortunadamente. – JesperE
Hmm. Tenía la impresión de que las bibliotecas se transportaban a diferentes plataformas. –