2010-10-08 14 views
10

He almacenado archivos que no son de Java en un paquete. Quiero leer los archivos de este paquete sin especificar la ruta absoluta al archivo (por ejemplo, C: \ etc \ etc ...). ¿Cómo debería hacer esto?¿Cómo se lee un archivo (por ejemplo, un archivo txt) de otro paquete java sin especificar la ruta absoluta?

+1

La respuesta a esta pregunta también responderá a la suya, aunque técnicamente no es un duplicado: http://stackoverflow.com/questions/2308188/getresourceasstream-vs-fileinputstream –

Respuesta

18

Uso getResourceAsStream

Por ejemplo:

MyClass.class.getResourceAsStream("file.txt"); 

se abrirá file.txt si está en el mismo paquete que MyClass

también:

MyClass.class.getResourceAsStream("/com/foo/bar/file.txt"); 

Se abrirá file.txt en el paquete com.foo.bar

¡Buena suerte! :)

+0

¿Qué es 'MyClass'? – alex

+0

@alex Supongo que es la clase * de * que está tratando de obtener acceso a otro paquete. Si la Clase A, el Paquete A está intentando acceder a un archivo en el Paquete B, 'MyClass' sería Clase A, Paquete A. Esa es mi interpretación. – Mathomatic

1

Primero, asegúrese de que el paquete en el que se encuentran sus archivos se encuentre en la classpath de su aplicación. Aunque no especificó la ruta de los archivos, aún debe obtener las rutas de los archivos para leerlos. ¿Todos los nombres de sus archivos y nombre (s) de paquete (s)? Si es así, su podría intentar esto para obtener una URL de su archivo:

public class Test { 
    public static void main(String[] args) throws Exception { 
     URL f = Test.class.getClassLoader().getResource("resources/Test.txt"); 
     System.out.println(f); 
    } 
} 

el código anterior obtiene la URL del archivo 'Prueba.txt' en otro paquete llamado 'recursos'.

Cuestiones relacionadas