2009-08-14 27 views

Respuesta

10

En general, una ruta específica puede representar tanto un directorio y un archivo. Hasta que no haya un directorio o un archivo creado en esa ruta, la noción de que sea para uno u otro no es válida.

Sin embargo, hay un caso especial. Si la ruta termina con un separador de ruta ('/' en sistemas tipo Unix, '\' en Windows y tal vez algo completamente diferente en otros sistemas), entonces al menos en sistemas tipo Unix, la ruta no puede ser la de un archivo. No sé si esto es válido para todos los sistemas.

0

Prueba File.exists() primero.

pseudo-código (porque no hago Java :)):

If File.Exists() 
{ 
    If File.isFile() 
    { 
     bIsFile = true; 
    }elseif File.isFolder() 
    { 
     bIsFolder = true; 
    }else 
    { 
     //Handle error condition here 
    } 
}else 
{ 
    //It does not exist. Handle that here if you care to 
} 
+1

Pero quiero saber si se trata de un archivo o un directorio si * no * es que existe ... Si no es así –

+1

't existen, no es ni pescado ni aves, no es nada. –

+0

EBGreen, ¡creo que acabas de ganar el premio por la interacción de smiley/paréntesis más complicada de la historia! : o) –

3

No se puede

existe el archivo debe en primer lugar para saber lo que ES (entiendo que si no existe el archivo no es nada todavía)

el Javadoc dice tanto casos:

verdadero si y sólo si el fichero denotado por esta vía de acceso abstracta existe y [...]

Un archivo que aún no existe puede ser potencialmente.

2

Creo que la respuesta es que no se puede. Parte de la razón es que simplemente no existe. El resto del motivo tiene que ver con la independencia del sistema de Java. Dependiendo del sistema operativo en el que se esté ejecutando, no existe realmente una diferencia entre un archivo y un directorio. En UNIX, por ejemplo, todo es un archivo. Tuberías, directorios, enlaces: todos son técnicamente archivos.

Tal como está, la ruta de acceso abstracta referenciada por el objeto Archivo puede ser cualquiera - hasta que realice mkdir() o createNewFile() en ella.

5

Su pregunta es como preguntar esto:

"¿Cómo puedo saber si esta caja contiene un gato o un perro cuando está vacío"

A primera vista, esta pregunta no tiene sentido, al igual que la tuya. Si un archivo es una ruta hace referencia a un objeto de sistema de archivos inexistente (es decir, a "nada"), entonces pregunta si ese "nada" >> es < < un archivo o un directorio no tiene sentido. Obviamente, ninguno de los dos.

Específicamente, en cualquier instante en el tiempo con todos los siguientes predicados HOLD:

file.exists() == false IMPLIES 
     file.isDirectory() == false AND file.isFile() == false 

file.isDirectory() == true OR file.isFile() == true IMPLIES 
     file.exists() == true 

file.isDirectory() == true IMPLIES 
     file.isFile() == false 

file.isFile() == true IMPLIES 
     file.isDirectory() == false 
Cuestiones relacionadas