2011-12-25 16 views
8

Tengo una pregunta bastante obvia, pero no he sido capaz de encontrar una solución para esto:ruta de archivo Java en Linux

Cuando intento y leer un archivo me sale un "error de archivo no encontrado" es tiempo de ejecución Sin embargo compiló el archivo.

estoy en Linux, así que utilizo la sentencia como:

Scanner s = new Scanner(new File("home/me/java/ex.txt")); 

y me da un rror tiempo de ejecución:

/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:137) 
at java.util.Scanner.<init>(Scanner.java:653) 
at test.main(test.java:14) 

He intentado cambiar todo lo posible a lo largo de las líneas de nombres de archivo, pero nada parece funcionar.

¿Alguna pista de por qué está sucediendo esto? ¿dónde java busca los archivos por defecto?

+1

dice que no se encontró la ubicación de su archivo. Supongo que su ruta es "/home/me/java/ex.txt" en el sistema de Linux. –

+0

¿Cuál es el valor de ['user.home'] (http://pscode.org/prop/all.html?prop=user.home&format=TSV) en ese sistema? –

Respuesta

14

Parece que se está perdiendo una barra diagonal. Tal vez intente:

Scanner s = new Scanner(new File("/home/me/java/ex.txt")); 

(en cuanto a donde se busca archivos por defecto, que es donde la JVM se ejecuta desde por rutas relativas como el que usted tiene en su pregunta)

+1

Gracias Todd. Fue la barra principal. ¡Eso resolvió el problema! ¡Tonto de mí! – AJW

10

Creo que Todd es correcta , pero creo que hay otra cosa que deberías considerar. Puede obtener de manera confiable el directorio de inicio desde la JVM en tiempo de ejecución, y luego puede crear archivos de objetos relativos a esa ubicación. No es mucho más problema, y ​​es algo que apreciarás si alguna vez te mudas a otra computadora o sistema operativo.

File homedir = new File(System.getProperty("user.home")); 
File fileToRead = new File(homedir, "java/ex.txt"); 
+3

Si transfiere a * cualquier * otro sistema operativo, sugiero cambiar el '"/"' en la ruta para 'System.getProperty (" file.separator ")' o construir alternativamente la ruta en partes utilizando ese constructor. De lo contrario, +1 –

+0

Gracias factura por ese gran consejo. Implementaré esto inmediatamente. – AJW

+3

Si se dirige a Unix, Linux, OS X o Windows, la barra diagonal funcionará. Sí, incluso Windows. – Bill

Cuestiones relacionadas