import java.util.Scanner;
import java.io.*;
public class scanners {
public static void main(String[] args) {
File testFile = new File("names.txt");
// Scanner sc = new Scanner(testFile);
System.out.println(System.getProperty("user.dir"));
}
}
此代码的输出为C:\Users\steve\eclipse-workspace\a3
,并且我的names.txt
放置在此文件夹中。但是,当我取消注释创建扫描程序对象的代码时,会得到FileNotFoundException
。我究竟做错了什么?
import java.util.Scanner;
import java.io.*;
public class scanners {
public static void main(String[] args) {
Scanner sc = null;
try {
sc = new Scanner(new File("names.txt"));
}
catch(FileNotFoundException e) {
System.out.println("Problem reading the data file. Returning null for Scanner"
+ "object. Problems likely to occur." + e);
}
System.out.println(sc.nextLine());
}
}
由于某种原因,这种格式可以正常工作,但我之前发布的格式却不行。我真的不知道为什么。
答案 0 :(得分:0)
请使用以下命令检查您的names.txt的绝对路径:
System.out.println(new File("names.txt").getAbsolutePath());
它将向您显示JVM希望在哪里找到文件,以及文件是否也存在于您期望的文件夹中。
答案 1 :(得分:0)
尝试直接在eclipse中添加文本文件,在包资源管理器中,右键单击您的项目,然后单击添加->未命名的文本文件,将其另存为names.txt。
您可能还用隐藏的文件类型将其命名为names.txt,所以现在将其命名为names.txt.txt,有时候我就遇到了:D
答案 2 :(得分:0)
我认为代码很可能实际上没有在您认为确实存在的目录中运行。如果将File testFile = new File("names.txt");
替换为File testFile = new File("C:\Users\steve\eclipse-workspace\a3\names.txt");
,是否可行?如果是这样,请在eclipse中检查您的“运行配置”,以确保您实际上在该文件夹中运行
答案 3 :(得分:0)
systemproperty'user.dir'是指用户的主目录。这与“当前工作目录”不同,后者是解析相对路径的目录。
在您的情况下,两个显然不相等。
您可以选择以下方法:
new File(getSystemProperty("user.dir"), "names.txt");
或者您可以指定一个绝对路径,并记住在Java中,反斜杠是字符串转义符,因此,它看起来像:
new File("C:/Users/steve/eclipse-workspace/a3/names.txt");
或者:
new File("C:\\Users\\steve\\eclipse-workspace\\a3\\names.txt");
或者如果这个name.txt东西与您的班级文件放在同一位置:
new Scanner(ClassYouAreIn.class.getResourceAsStream("names.txt"), StandardCharsets.UTF_8);