gpt4 book ai didi

java - 如何从Java项目中的相对路径读取文件? java.io.File 找不到指定的路径

转载 作者:IT老高 更新时间:2023-10-28 11:23:06 36 4
gpt4 key购买 nike

我有一个包含 2 个包的项目:

  1. tkorg.idrs.core.searchengines
  2. tkorg.idrs.core.searchengines

在包 (2) 中我有一个文本文件 ListStopWords.txt,在包 (1) 中我有一个类 FileLoadder。这是 FileLoader 中的代码:

File file = new File("properties\\files\\ListStopWords.txt");

但我有这个错误:

The system cannot find the path specified

你能给出解决办法吗?

最佳答案

如果它已经在类路径中,那么只需从类路径而不是从磁盘文件系统中获取它。不要摆弄 java.io.File 中的相对路径。它们依赖于您完全无法从 Java 代码内部控制的当前工作目录。

假设 ListStopWords.txt 与您的 FileLoader 类在同一个包中,然后执行:

URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());

或者,如果你最终想要的只是一个 InputStream:

InputStream input = getClass().getResourceAsStream("ListStopWords.txt");

这当然比创建 new File() 更可取,因为 url 不一定代表磁盘文件系统路径,但它也可以代表虚拟文件系统路径(当 JAR 扩展到内存而不是磁盘文件系统上的临时文件夹时,可能会发生这种情况)甚至是网络路径,这两者都不是 File 构造函数可以消化的定义。

如果文件是——正如包名所暗示的——实际上是一个完全值得的properties file (包含 key=value 行)只有“错误”扩展名,然后您可以立即将 InputStream 提供给 load()方法。

Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));

注意:当您尝试从 static 上下文中访问它时,请使用 FileLoader.class (或任何 YourClass.class ) 而不是上述示例中的 getClass()

关于java - 如何从Java项目中的相对路径读取文件? java.io.File 找不到指定的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844307/

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