如何从Java项目中的相对路径读取文件? java.io.File找不到指定的路径
我有一个包含2个包的项目:
ListStopWords.txt
ListStopWords.txt
在包(2)中我有一个文本文件ListStopWords.txt,在包(1)中我有一个类FileLoadder.这是代码FileLoader:
File file = new File("properties\\files\\ListStopWords.txt");
但有这个错误:
The system cannot find the path specified
你能解决一下吗? 谢谢。
tiendv asked 2019-07-25T13:51:44Z
10个解决方案
143 votes
如果它已经在类路径中,那么只需从类路径中获取它。 请勿在static中使用相对路径。它们依赖于当前工作目录,您无法完全控制Java代码。
假设static与FileLoader.class类在同一个包中:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.getPath());
或者如果你所追求的只是static:
InputStream input = getClass().getResourceAsStream("ListStopWords.txt");
如果文件是-as包名称提示 - 实际上是一个完全属性文件(包含static行),只有“错误”扩展名,那么您可以立即将其提供给static方法。
Properties properties = new Properties();
properties.load(getClass().getResourceAsStream("ListStopWords.txt"));
注意:当您尝试从static上下文中访问它时,请在上面的示例中使用FileLoader.class而不是getClass()。
BalusC answered 2019-07-25T13:52:31Z
37 votes
如果我们要指定文件的相对路径,可以使用以下行。
File file = new File("./properties/files/ListStopWords.txt");
santhosh answered 2019-07-25T13:52:59Z
20 votes
相对路径在java中使用。运营商。
。 表示与当前运行的上下文相同的文件夹。
..表示当前运行的上下文的父文件夹。
所以问题是你如何知道java目前正在寻找的路径?
做一个小实验
File directory = new File("./");
System.out.println(directory.getAbsolutePath());
观察输出,您将了解java正在查找的当前目录。 从那里,只需使用./运算符来定位您的文件。
例如,如果输出是
G:\ JAVA8Ws\ MyProject的\内容。
并且您的文件存在于MyProject简单使用的文件夹中
File resourceFile = new File("../myFile.txt");
希望这可以帮助
Samrat answered 2019-07-25T13:54:26Z
7 votes
InputStream in = FileLoader.class.getResourceAsStream("");
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}
frictionlesspulley answered 2019-07-25T13:54:45Z
6 votes
试试.\properties\files\ListStopWords.txt
bUg. answered 2019-07-25T13:55:13Z
4 votes
虽然BalusC提供的答案适用于这种情况,但是当文件路径包含空格时它会中断,因为在URL中,这些将被转换为%20,而不是有效的文件名。 如果使用URI而不是String构造File对象,则将正确处理空格:
URL url = getClass().getResource("ListStopWords.txt");
File file = new File(url.toURI());
Mark Krijgsman answered 2019-07-25T13:55:39Z
1 votes
我本可以评论,但我的代表较少。萨姆拉特的回答为我做了这个工作。 最好通过以下代码查看当前目录路径。
File directory = new File("./");
System.out.println(directory.getAbsolutePath());
我只是用它来纠正我在项目中遇到的问题。 请务必使用./返回当前目录的父目录。
./test/conf/appProperties/keystore
Aditya Bhardwaj answered 2019-07-25T13:56:16Z
0 votes
我想在src / main // js / Simulator.java中解析'command.json'。 为此我在src文件夹中复制了json文件并给出了这样的绝对路径:
Object obj = parser.parse(new FileReader("./src/command.json"));
sver answered 2019-07-25T13:56:42Z
-1 votes
如果您尝试从静态方法或静态阻止调用getClass(),则可以执行以下方法。
您可以在要加载的Properties对象上调用getClass()。
public static Properties pathProperties = null;
static {
pathProperties = new Properties();
String pathPropertiesFile = "/file.xml;
InputStream paths = pathProperties.getClass().getResourceAsStream(pathPropertiesFile);
}
arun_kk answered 2019-07-25T13:57:16Z
-1 votes
如果未读取文本文件,请尝试使用更接近的绝对路径(如果您愿意)你可以使用完整的绝对路径,)像这样:
FileInputStream fin=new FileInputStream("\\Dash\\src\\RS\\Test.txt");
假设绝对路径是:
C:\\Folder1\\Folder2\\Dash\\src\\RS\\Test.txt
KR N answered 2019-07-25T13:57:51Z