Tengo un proyecto con 2 paquetes:
tkorg.idrs.core.searchenginestkorg.idrs.core.searchengines
En el paquete (2) tengo un archivo de texto ListStopWords.txt, en el paquete (1) tengo una clase FileLoadder. Aquí está el código en FileLoader:
File file = new File("properties\\files\\ListStopWords.txt");
Pero tengo este error:
The system cannot find the path specified
¿Puedes dar una solución para solucionarlo? Gracias.

properties.filesa2?Respuestas:
Si ya está en la ruta de clases, simplemente obténgalo de la ruta de clases en lugar del sistema de archivos del disco. No juegues con las rutas relativas
java.io.File. Dependen del directorio de trabajo actual sobre el que no tiene ningún control desde el interior del código Java.Suponiendo que
ListStopWords.txtesté en el mismo paquete que suFileLoaderclase, haga lo siguiente:O si todo lo que buscas en última instancia es en realidad
InputStreamalgo:Sin duda, esto es preferible a la creación de un
new File()porqueurlpuede que no represente necesariamente una ruta del sistema de archivos del disco, pero también podría representar la ruta del sistema de archivos virtual (lo que puede suceder cuando el JAR se expande en la memoria en lugar de en una carpeta temporal en el sistema de archivos del disco) o incluso una ruta de red que, por definición, no puede digerirse por elFileconstructor.Si el archivo -como sugiere el nombre del paquete- es en realidad un archivo de propiedades completo (que contiene
key=valuelíneas) con la extensión "incorrecta", entonces puede alimentarInputStreamelload()método inmediatamente .Nota: cuando intente acceder a él desde el
staticcontexto interno , utiliceFileLoader.class(o lo que seaYourClass.class) en lugar degetClass()en los ejemplos anteriores.fuente
FileLoaderes la clase personalizada de OP. Se supone que es exactamente esa clase en la que está intentando obtener el recurso. Así, asíNameOfYourCurrentClass.class.getResourceAsStream(...). ElClassLoader.classfallará si laClassLoaderclase está siendo cargado por un cargador de clases diferentes, lo que puede ocurrir en una aplicación "empresa" con una jerarquía de múltiples cargadores de clases (como una aplicación web Java EE).La siguiente línea se puede utilizar si queremos especificar la ruta relativa del archivo.
fuente
InputStream?InputStream is = new FileInputStream("./properties/files/ListStopWords.txt");La ruta relativa funciona en Java usando el. operador.
Entonces, la pregunta es, ¿cómo sabe la ruta en la que está buscando Java actualmente?
haz un pequeño experimento
Observe la salida, llegará a conocer el directorio actual donde está buscando java. Desde allí, simplemente use el operador ./ para ubicar su archivo.
por ejemplo si la salida es
y su archivo está presente en la carpeta MyProject, simplemente use
Espero que esto ayude
fuente
fuente
.classliteral solo proporcionando el nombre completo de su clase.tratar
.\properties\files\ListStopWords.txtfuente
Podría haber comentado, pero tengo menos reputación por eso. La respuesta de Samrat hizo el trabajo por mí. Es mejor ver la ruta del directorio actual a través del siguiente código.
Simplemente lo usé para rectificar un problema que enfrentaba en mi proyecto. Asegúrese de utilizar ./ para volver al directorio principal del directorio actual.
fuente
Si bien la respuesta proporcionada por BalusC funciona para este caso, se interrumpirá cuando la ruta del archivo contenga espacios porque en una URL, estos se están convirtiendo a% 20, que no es un nombre de archivo válido. Si construye el objeto File usando un URI en lugar de una String, los espacios en blanco se manejarán correctamente:
fuente
Quería analizar 'command.json' dentro de src / main // js / Simulator.java. Para eso, copié el archivo json en la carpeta src y di la ruta absoluta como esta:
fuente
Suponiendo que quiera leer desde el
resourcesdirectorio enFileSystemclase.Nota:
.No se necesita liderazgo .fuente
Para mí, en realidad, el problema es que la ruta de clase del objeto File proviene
<project folder path> or ./src, así que useFile file = new File("./src/xxx.txt");resolvió mi problemafuente
String basePath = nuevo archivo ("myFile.txt"). GetAbsolutePath (); esta ruta base que puede usar como la ruta correcta de su archivo
fuente
Si está intentando llamar
getClass()desde un método estático o un bloque estático, puede hacerlo de la siguiente manera.Puede llamar
getClass()alPropertiesobjeto en el que está cargando.fuente
Si el archivo de texto no se está leyendo, intente usar una ruta absoluta más cercana (si lo desea, puede usar la ruta absoluta completa) como esta:
suponga que la ruta absoluta es:
fuente