Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 访问jar中的csv文件_Java_File_Embedded Resource - Fatal编程技术网

Java 访问jar中的csv文件

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")

当一个用户运行我的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");
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