gpt4 book ai didi

java - 无需InputStream即可访问jar中的csv文件

转载 作者:行者123 更新时间:2023-12-01 13:47:32 25 4
gpt4 key购买 nike

当运行我的 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())
...

我不想将此文件从 jar 中取出。我只想读取文件。我该怎么做?

编辑:我关闭了第一篇文章的登录 - Access to csv file in jar - 我不知道如何删除它,也无法回复评论。所以我在这里再次发布。

是否可以不使用InputStream?

最佳答案

您在这里使用 getResource() 非常可疑。我根本不会依赖 getResource() 来查找数据包/目录(毕竟,有人可能会认为它应该返回资源,而不是 namespace )。

此外,永远不要解释 getResource() 返回的 URL - 它会带来两倍的麻烦。类加载器可以返回任何内容,返回的 URL可能与您请求的内容没有任何共同之处。当 ClassLoader 不是标准类路径 JRE 类加载器(想想应用程序服务器、WebStart 等)时,从 URL 的字符串表示构造某些内容很可能会失败。

直接询问您想要的资源:

 getResource("com/mysoft/resources/VAL.csv")

并且不要创建文件,使用InputStream。资源不是文件,您无法使用文件 API 访问它们。

关于java - 无需InputStream即可访问jar中的csv文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20250179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com