当前位置: 首页 > 面试题库 >

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

勾喜
2023-03-14
问题内容

我有一个包含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");

这肯定比创建a优先,new File()因为url可能不一定代表磁盘文件系统路径,但也可能代表虚拟文件系统路径(当JAR扩展到内存而不是磁盘文件系统上的temp文件夹时,可能会发生)甚至网络路径,根据定义,这两个路径都不能由File构造函数消化。

如果该文件是-包名称所暗示的- 实际上是一个完全有价值的属性文件(包含key=value行),且扩展名仅是“错误”,则可以InputStream立即将其提供给该load()方法。

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

注意:当你尝试从内部static上下文中访问它时,请使用FileLoader.class(或其他方法YourClass.class)代替getClass()上面的示例。



 类似资料:
  • 我有3个项目,ProjectB,ProjectC。 当我构建ProjectB时,它没有任何问题。但是当我试图构建ProjectA时,它在控制台上出现以下错误而失败。 评估项目“:ProjectB”时出现问题。在项目:ProjectB中找不到路径为:ProjectC的项目。 build.gradle-ProjectC settings.gradle-ProjectC build.gradle - 项

  • 问题内容: 在这个话题上有很多困惑。已经提出了几个问题。事情似乎仍然不清楚。ClassLoader,绝对文件路径等 假设我有一个项目目录结构, 我在“ lib / txt”目录中有一个资源说“ txtfile.txt”。我想以系统独立的方式访问它。我需要项目的绝对路径。所以我可以将路径编码为abspath +“ / lib / Dictionary / txtfile.txt” 假设我这样做 我得

  • 本文向大家介绍java项目中的绝对路径和相对路径用法说明,包括了java项目中的绝对路径和相对路径用法说明的使用技巧和注意事项,需要的朋友参考一下 绝对路径:不可改变的路径 本地绝对路径:增加盘符的路径(e:/test/test.html) 网络绝对路径:增加协议,IP地址,端口号的路径(http://localhost:8080/test/test.html) 相对路径:可以改变的路径,但是以基

  • 问题内容: 我正在尝试在当前包外部的路径中运行exe文件。我运行它的code.java文件在 但是exe所在的目录 如果可能的话,似乎最好的解决方案是获取Project的绝对路径,然后在其中添加“ src \ main \ resources \”。有什么好方法吗?或者有替代的解决方案?我正在使用Eclipse,但如果也可以在其他IDE中使用它,那就太好了。谢谢你的帮助。 问题答案: 解决此问题的

  • V1.1.1新增 sp_asset_relative_url($asset_url) 功能: 获取文件相对路径 参数: $asset_url:文件URL 返回 类型字符串,带协议的绝对地址直接返回原来的值,否则会转化为相对于系统upload 目录的文件路径 实例 <?php $file='/data/upload/1.png';//文件路径 $path=sp_asset_relative_url

  • 问题内容: 我的程序需要读取一些文本配置文件。我当前的代码是: 当我在eclipse中本地运行它时,此方法有效,尽管我确实必须进行破解以处理路径名中的空间。配置文件与上述方法位于同一软件包中。但是,当我将应用程序导出为jar时,出现了问题。该jar位于共享的映射网络驱动器Z:上。当我从命令行运行应用程序时,出现此错误: java.io.FileNotFoundException:文件:\ Z:\