2010-11-29 17 views
5

Estoy intentando transferir algún código de Linux a Windows. Realmente no sé mucho sobre Windows, así que estoy volando a ciegas. El código en cuestión intenta eliminar algunos directorios usando org.apache.commons.io.FileUtils¿Por qué este código está muriendo en Windows?

// If the mergesegs worked, delete the segment dirs 
    for (File file : segments.listFiles()) 
    { 
     if (!file.equals(mergedSegFile)) 
     { 
      LOG.debug("deleting segment dir " + file); 
      FileUtils.deleteDirectory(file); 
     } 
    } 

segments es un archivo, como suele mergedSegFile. Muere con una IOException "Unable to delete file: c:\www\tomcat\crawls\test\TestingCode.site\crawldir\segments\20101128194700\parse_test\part-00000\data".

Estos archivos fueron creados por una ejecución previa del mismo programa (que hace un poco de rastreo de Nutch). Hacer una ls -l bajo Cygwin muestra al usuario y de grupo son correctas, pero las ondulaciones permanentes son 000.

Más información:

  • dir no me dice nada acerca de los permisos.
  • Puedo eliminar el directorio con del en una ventana de cmd.exe o rm -rf en una ventana de cygwin bash.
  • Los archivos en cuestión y el directorio en el que se encuentran se crearon anteriormente en la misma ejecución del mismo programa.
  • La computadora está ejecutando Windows 7, así que supongo que eso significa que es NTFS.
+0

¿Tal vez el programa que intenta eliminar el directorio, lo usa o los archivos en él? Extraiga el código que elimina el directorio y crea un código de prueba pequeño, que toma el directorio como un argumento de línea de comandos y lo elimina. ¿Funciona? – khachik

+0

¿Tal vez obtenga más información en StackTrace of the Exception? – keuleJ

Respuesta

3

Muchas posibilidades aquí. La ruta en sí no se ve mal. Su mejor opción es tratar de eliminar ese directorio manualmente desde un símbolo del sistema y ver qué error obtiene.

Lo que debe verificar:

  • es el directorio, o cualquiera de sus contenidos, en uso por una aplicación?
  • ¿El directorio, o cualquiera de sus archivos, es de solo lectura? (Consulte con dir, no ls).
  • ¿El directorio, o cualquiera de sus archivos, tiene permisos especiales, y usted no es un administrador?
  • Por cierto, esto es NTFS, supongo?
+0

- Puedo eliminar el archivo muy bien con "del". –

+0

- dir no me dice nada sobre los permisos. Supongo que es NTFS, es Windows 7. –

+0

¿Es "datos" un archivo o un directorio? Además, ¿tiene algún permiso especial? – EboMike

Cuestiones relacionadas