texto por para nombre fecha explorador contenido como comando busqueda buscar avanzada archivos c++ visual-c++

c++ - por - Monitoreando una carpeta para nuevos archivos en Windows



como buscar archivos por fecha en windows 10 (7)

  1. Synch.variant FindFirstChangeNotification
  2. Asynch.variant ReadDirectoryChangesW

¿Cuál es la mejor manera de supervisar una carpeta para ver cuándo se le 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.


Como se mencionó anteriormente, las notificaciones de cambio de directorio es lo que desea.

Los he investigado 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.

Echa un vistazo a esta búsqueda de Google para encontrar varias soluciones para esperar hasta que el archivo esté completamente escrito

Editar : Acabo de ver que la pregunta fue etiquetada con c ++, y me vinculé 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.






Puede usar un método de sondeo para monitorear la carpeta. El ciclo se ejecutará cada 5 segundos, por ejemplo.

Este método devuelve una lista de 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 sondeará cada 5 segundos y llamará al método anterior.

public void MonitorFolder() { while (true) { List<string> newFiles = GetNewFiles(path); System.Threading.Thread.Sleep(5000); // 5000 milliseconds } }