gpt4 book ai didi

Java 在静态方法中读取文件,使用 ClassLoader 给出 FileNotFoundException

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:44:42 25 4
gpt4 key购买 nike

我想在我的 java 类中读取一个文件。我的问题类似to this one ,但有两点不同。首先,我使用不同的项目布局:

/src/com/company/project
/resources

在资源文件夹中我有一个名为“test.txt”的文件:

/resources/test.txt

在项目文件夹中我有一个类test.java

/src/com/company/project/test.java

我希望 mu java 类能够以静态方法读取 test.txt 的内容。我尝试了以下方法:

private static String parseFile()
{
try
{
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();

String fileURL = classLoader.getResource("test.txt").getFile();

File file = new File(fileURL);


...
}
}

以及以下路径:

File file1 = new File("test.txt");
File file2 = new File("/test.txt");
File file3 = new File("/resources/test.txt");

但是当我想读取文件时,它们都会抛出 FileNotFoundException。关于我的项目设置以及该方法需要静态的事实,我如何在上面的代码片段中正确声明我的文件路径?

最佳答案

您应该使用与资源位于同一 JAR 中的类的类加载器,而不是 TCCL。然后您需要使用完整路径指定资源名称。将它们作为文件访问通常不好。只需直接打开它进行阅读(如果需要,也可以将其复制到临时文件):

InputStream is =
Project.class.getClassLoader().getResourceAsStream("/resource/test.txt");

顺便说一句:如果你只是想打开一个文件,你需要使用一个相对文件名。这是相对于开始目录搜索的,通常是项目主目录(在 eclipse 中):

File resource = new File("resource/test.txt");

(但如果您将其打包为 JAR,这将不起作用)。

关于Java 在静态方法中读取文件,使用 ClassLoader 给出 FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27705216/

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