Acceso al archivo csv en jar sin InputStream
Frecuentes
Visto 945 veces
0
Intenté todo para acceder al archivo CSV cuando ejecuté mi jar. Puse el CSV en el paquete de recursos en Eclipse, y está bien cuando ejecuto el código desde allí, pero no funciona cuando ejecuto el archivo jar desde un ejecutable.
ClassLoader c = MyClass.class.getClassLoader();
URL url = c.getResource("com/mysoft/resources/");
String path = URLDecoder.decode(url.getPath(), "utf-8");
File f = new File(path+ "VAL.csv");
if(f.exists())
...
No quiero sacar este archivo del frasco. Solo quiero leer el archivo. ¿Cómo puedo hacerlo?
EDITAR: Cerré mi inicio de sesión de mi primera publicación - Acceso al archivo csv en jar - y no sé cómo eliminarlo, y no puedo responder a los comentarios. Así que lo publiqué de nuevo aquí.
¿Es posible no usar InputStream?
1 Respuestas
1
Su uso de getResource() aquí es muy dudoso. No confiaría en getResource() para encontrar un paquete/directorio (después de todo, se puede argumentar que debería devolver recursos, no espacios de nombres).
También, trabaja para nunca jamás interprete la URL devuelta por getResource() - es un problema tentador multiplicado por dos. El ClassLoader puede devolverle cualquier cosa, la URL devuelta puede no tienen nada en común con lo que pediste. La construcción de algo a partir de la representación de cadena de la URL tiene una oportunidad abominable de fallar cuando ClassLoader no es su cargador de clases JRE de ruta de clase estándar (piense en Application Server, WebStart, etc.).
Pregúntenos directamente para el Recurso que desea:
getResource("com/mysoft/resources/VAL.csv")
Y no crear un Declarar impuestos, utilice InputStream. Recursos no son archivos, no puede acceder a ellos con File API.
respondido 27 nov., 13:18
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas java eclipse file jar or haz tu propia pregunta.
¿Por qué querrías evitar usar un InputSTream, ya que eso es precisamente lo que debes usar para leer tu CSV? Ya tenías una respuesta a tu anterior pregunta idéntica. Usa esta respuesta. Si todavía está atascado, responda a los comentarios, edite su pregunta para mostrar lo que ha intentado. Y dar más información: qué contiene el tarro, por ejemplo. - JB Nizet
posible duplicado de Acceso al archivo csv en jar - JB Nizet
Porque ya tengo un método que lee csv fuera de jar, y me gustaría usar lo mismo con csv dentro de jar: Lucie
Por lo tanto, haga que este método tome un InputStream como argumento y llámelo con el InputStream devuelto por
ClassLoader.gerResourceAsStream()
(cuando el archivo está dentro del contenedor), o con un FileInputStream (cuando el archivo está en el sistema de archivos). No hay forma de usar un Archivo para un recurso dentro de un jar (aparte de leer el recurso y escribirlo en un archivo, y luego volver a abrir este archivo, lo cual es estúpido) - JB NizetOk, funciona con InputStream, voy a cambiar mi código para usarlo. Gracias - Lucie