Foros del Web » Programación para mayores de 30 ;) » Java »

saber cuando un archivo entra a una carpeta

Estas en el tema de saber cuando un archivo entra a una carpeta en el foro de Java en Foros del Web. Hola amigos, estoy trabajando en una aplicacion que copia archivos de una carpeta a otra, este proceso se ejecuta en el especifico momento en el ...
  #1 (permalink)  
Antiguo 15/11/2013, 09:14
Avatar de info4  
Fecha de Ingreso: marzo-2008
Mensajes: 55
Antigüedad: 16 años, 1 mes
Puntos: 2
saber cuando un archivo entra a una carpeta

Hola amigos,
estoy trabajando en una aplicacion que copia archivos de una carpeta a otra,
este proceso se ejecuta en el especifico momento en el que un nuevo archivo es creado
(cortado o copiado) en la carpeta y despues es copiado a una una carpeta segun el usuario que lo agrego.
En el copiado de archivos estoy bien, pero no se de algun proceso para saber cuando se
ingresa un nuevo archivo al directorio ¿Tiene que ver con algun hilo/demonio la solucion que requiero?
Espero que puedan orientarme, gracias.
__________________
"Pulvis es et in pulverum reverteris"
  #2 (permalink)  
Antiguo 15/11/2013, 09:39
 
Fecha de Ingreso: febrero-2011
Mensajes: 672
Antigüedad: 13 años, 2 meses
Puntos: 78
Respuesta: saber cuando un archivo entra a una carpeta

Entiendo que el supuesto archivo que entrará en la carpeta, no entra desde tu programa, sino es un usuario que hace un copiar y pegar de Windows, no?
Si es así, puedes hacer un programilla pequeño (no hace falta ni que hagas un hilo), simplemente un bucle que mire los ficheros que hay y compare los nombres de archivos con los de la vez anterior, así sabrás si un archivo ha salido, ha entrado o no han habido cambios.

No te guies por el número de archivos que hay, ya que puede salir un fichero de la carpeta, entrar otro, y según el programa no habrían habido cambios.
  #3 (permalink)  
Antiguo 16/11/2013, 04:09
 
Fecha de Ingreso: noviembre-2012
Mensajes: 40
Antigüedad: 11 años, 5 meses
Puntos: 7
Respuesta: saber cuando un archivo entra a una carpeta

En Java7 se añadió una nueva funcionalidad, una serie de clases e interfaces que te permiten monitorizar la nueva entrada de ficheros a un directorio(entre otras cosas), te recomiendo leer la documentación respecto a estas nuevas clases e interfaces.

Código Java:
Ver original
  1. Watchable  
  2. WatchEvent<T>  
  3. WatchEvent.Kind<T> 
  4. WatchEvent.Modifier
  5. WatchKey   
  6. WatchService

Yo te recomendaría utilizar hilos por lo beneficios que puedas obtener, sobre todo por conectividad, para obtener información sobre que está haciendo el hilo, o cuantos ficheros lleva procesados...etc, si es un programilla independiente, obtener información del mismo es bastante mas complicado.

Ya que el hilo realiza todas sus tareas en segundo plano, te recomiendo leer sobre el patrón Observer para poder monitorizar y recibir información del hilo.

Saludos.
  #4 (permalink)  
Antiguo 19/11/2013, 19:00
Avatar de info4  
Fecha de Ingreso: marzo-2008
Mensajes: 55
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: saber cuando un archivo entra a una carpeta

Antes que nada, gracias por sus respuestas.
Efectivamente, el archivo entra cuando un usuario hace un copiar/pegar de el a la carpeta A, teniendo las carpetas A y B siendo A una carpeta especie repositorio general donde caerán todos los archivos y B es una carpeta personalizada para cada usuario donde se copiarán todos los archivos que el subió y en la que mi sistema administra de forma independiente. El proceso es así:
1. El usuario deposita (lo copia y pega) el documento archivo_ejemplo.docx a la carpeta A.
2. Se dispara un "evento" que inicia el proceso de copiado de la carpeta A hacia la carpeta B.
3. Se realiza el copiado de la carpea A a la carpeta B del nuevo archivo_ejemplo.docx.
4. El sistema administra archivo_ejemplo.docx situado en la carpeta B para posteriores procesos.

Mi principal problema es con el punto 2, es decir con el disparador de la rutina de copiado, dicho de otra forma, saber en qué momento un nuevo archivo es creado en la carpeta A. ¿Existe alguna manera de saber cuando un nuevo archivo es creado? ¿O debo implementarlo como una tarea de windows cada cierto tiempo (por ejemplo: 1 minuto)

De nuevo agradesco sus respuestas y pondré en práctica lo que ya me han aconsejado.
__________________
"Pulvis es et in pulverum reverteris"

Etiquetas: carpeta, entra
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:11.