这个问题在这里已经有答案了:
java,从当前目录读取文件(7个答案)
23天前关门了。
我是java新手,来自c++背景。我做了一个非常简单的代码来测试文件读取。我有一个名为“input.txt”的输入文件,它与名为“main.java”的主文件位于同一个文件中。但是,当我尝试使用名称“input”创建文件对象的新示例时。txt”,它找不到文件,file.exists()返回false。当我改为输入完整路径名时,它确实会找到文件。代码显示如下:
public static void main(String[] args) throws FileNotFoundException
{
// File file = new File("C:/Users/josep/OneDrive/Documents/java/input.txt"); //This works
File file = new File("input.txt"); //why won't this work?
if( file.exists() )
{
System.out.println("File exists");
}
else
{
System.out.println("Doesn't exist"); //this prints out.
}
Scanner input = new Scanner(file);
String str = input.nextLine();
System.out.println("Str: " + str);
input.close();
}
}
我在这里做错了什么,因为我不明白为什么我不能只输入文件名而不是完整路径。在c++中,如果文件在同一个文件夹中,我可以只输入文件名,所以我不明白为什么这里不起作用。下面是我得到的输出:
Doesn't exist
Exception in thread "main" java.io.FileNotFoundException: input.txt (The system cannot find the file specified)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:211)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:153)
at java.base/java.util.Scanner.<init>(Scanner.java:639)
at Main.main(Main.java:22)
有人能帮我理解发生了什么事吗?任何帮助都将不胜感激。
1条答案
按热度按时间qgzx9mmu1#
您可以看到路径解析到的位置(即系统属性“user.dir”中的目录),如下所示: