【问题标题】:Access to csv file in jar访问jar中的csv文件
【发布时间】:2013-12-13 11:23:48
【问题描述】:

在运行我的 jar 时,我尝试了所有方法来访问 csv 文件。 我把csv放在Eclipse的资源包中,从这个运行代码就可以了,但是从可执行文件运行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())
...

我不想把这个文件从罐子里拿出来。我只想看文件,怎么办?

【问题讨论】:

  • File 对象表示文件系统中文件的路径。您的 csv 不在文件系统上。它在罐子里面。使用 ClassLoader.getResourceAsStream(csvPath),从返回的流中读取。

标签: java file embedded-resource


【解决方案1】:

使用 getResourceAsStream 并且您应该尽可能指定编码。试试这个:

in = new BufferedReader(
       new InputStreamReader(
         new BufferedInputStream(
           this.getResourceAsStream("myPackage/myFile.txt")),
         "UTF-8"));

【讨论】:

    【解决方案2】:

    如果你只是想读取文件,你可以这样做:

    InputStreamReader isr = new InputStreamReader(getClass().getResourceAsStream(csvPath)));
    BufferedReader br = new BufferedReader(isr);
    

    【讨论】:

    • 你能弄清楚这里面的csvpath是什么吗?我面临与上述问题相同的问题,但是当我使用InputStreamReader 时,它显示NullPointerException
    • csvPath 是相对于 jar 文件根目录的路径。因此,如果该文件位于某个名为“dir”的基本目录中,您需要csvPath = "/dir/file.csv"
    猜你喜欢
    • 2011-07-07
    • 1970-01-01
    • 2013-12-13
    • 1970-01-01
    • 2012-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-07
    相关资源
    最近更新 更多