Quiero un programa Java que lea un nombre de archivo especificado por el usuario del directorio actual (el mismo directorio donde se ejecuta el archivo .class).
En otras palabras, si el usuario especifica que el nombre del archivo es "myFile.txt", y ese archivo ya está en el directorio actual:
reader = new BufferedReader(new FileReader("myFile.txt"));
No funciona. ¿Por qué?
Lo estoy ejecutando en Windows.
Respuestas:
El directorio actual no es (necesariamente) el directorio en el que se encuentra el archivo .class. Es el directorio de trabajo del proceso. (es decir, el directorio en el que se encontraba cuando inició la JVM)
Puede cargar archivos desde el mismo directorio * que el archivo .class con getResourceAsStream () . Eso le dará un InputStream que puede convertir en un lector con InputStreamReader .
* Tenga en cuenta que este "directorio" puede ser en realidad un archivo jar, dependiendo de dónde se cargó la clase.
fuente
Tratar
System.getProperty("user.dir")
Devuelve el directorio de trabajo actual.
fuente
Ninguna de las respuestas anteriores funciona para mí. Esto es lo que funciona para mí.
Digamos que el nombre de tu clase es Foo.java, para acceder a myFile.txt en la misma carpeta que Foo.java, usa este código:
URL path = Foo.class.getResource("myFile.txt"); File f = new File(path.getFile()); reader = new BufferedReader(new FileReader(f));
fuente
Los archivos de su proyecto están disponibles para usted en relación con su carpeta src. si sabe en qué paquete o carpeta estará myfile.txt, diga que está en
puede especificar su ruta como "src / package1 / myfile.txt" desde Prog.java
fuente
Si sabe que su archivo vivirá donde están sus clases, ese directorio estará en su ruta de clases. En ese caso, puede estar seguro de que esta solución resolverá su problema:
URL path = ClassLoader.getSystemResource("myFile.txt"); if(path==null) { //The file was not found, insert error handling here } File f = new File(path.toURI()); reader = new BufferedReader(new FileReader(f));
fuente
Prueba esto:
BufferedReader br = new BufferedReader(new FileReader("java_module_name/src/file_name.txt"));
fuente
intente usar "." P.ej
File currentDirectory = new File(".");
Esto funcionó para mi
fuente