Java 访问jar中的csv文件
当一个用户运行我的jar时,我尝试了一切方法来访问csv文件。 我将csv放在Eclipse的resources包中,当我从中运行代码时,它是正常的,但当我从可执行文件运行jar时,它不起作用Java 访问jar中的csv文件,java,file,embedded-resource,Java,File,Embedded Resource,当一个用户运行我的jar时,我尝试了一切方法来访问csv文件。 我将csv放在Eclipse的resources包中,当我从中运行代码时,它是正常的,但当我从可执行文件运行jar时,它不起作用 ClassLoader c = MyClass.class.getClassLoader(); URL url = c.getResource("com/mysoft/resources/"); String path = URLDecoder.decode(url.getPath(), "utf-8")
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())
...
我不想把这个文件从罐子里放出来。我只想读取文件,我该怎么办?如果您只想读取文件,可以执行以下操作:
InputStreamReader isr = new InputStreamReader(getClass().getResourceAsStream(csvPath)));
BufferedReader br = new BufferedReader(isr);
如果您只想读取文件,可以执行以下操作:
InputStreamReader isr = new InputStreamReader(getClass().getResourceAsStream(csvPath)));
BufferedReader br = new BufferedReader(isr);
使用getResourceAsStream,您应该尽可能指定编码。试试这个:
in = new BufferedReader(
new InputStreamReader(
new BufferedInputStream(
this.getResourceAsStream("myPackage/myFile.txt")),
"UTF-8"));
使用getResourceAsStream,您应该尽可能指定编码。试试这个:
in = new BufferedReader(
new InputStreamReader(
new BufferedInputStream(
this.getResourceAsStream("myPackage/myFile.txt")),
"UTF-8"));
文件对象表示文件系统上的文件路径。您的csv不在文件系统上。它在罐子里。使用ClassLoader.getResourceAsStreamcsvPath,并从返回的流中读取。文件对象表示文件系统上的文件路径。您的csv不在文件系统上。它在罐子里。使用ClassLoader.getResourceAsStreamcsvPath,并从返回的流中读取。您能否清除其中的csvpath?我面临的问题与上面问题中讨论的问题相同,但当我使用InputStreamReader时,它显示NullPointerExceptioncsvPath是相对于jar文件根的路径。因此,如果文件位于一个名为dir的基本目录中,您需要csvPath=/dir/file.csvc是否可以清除其中的csvPath?我面临的问题与上面问题中讨论的问题相同,但当我使用InputStreamReader时,它显示NullPointerExceptioncsvPath是相对于jar文件根的路径。因此,如果该文件位于一个名为dir的基本目录中,则需要csvPath=/dir/file.csv