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());}}出于某种原因,这种格式可以正常工作,但我之前发布的格式却没有。我真的不知道为什么。
3 回答
开满天机
TA贡献1786条经验 获得超13个赞
我认为很可能代码实际上并未在您认为的目录中运行。如果替换File testFile = new File("names.txt");
为File testFile = new File("C:\Users\steve\eclipse-workspace\a3\names.txt");
,它会起作用吗?如果是这样,请在 eclipse 中检查您的运行配置以确保您实际上在该文件夹中运行
不负相思意
TA贡献1777条经验 获得超10个赞
尝试在eclipse中直接添加文本文件,在包资源管理器中右键单击您的项目并添加->未命名的文本文件,将其保存为names.txt。
您可能还使用隐藏文件类型将其命名为 names.txt,因此现在称为 names.txt.txt,有时我会遇到这种情况:D
江户川乱折腾
TA贡献1851条经验 获得超5个赞
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");
或者如果这个 names.txt 东西与你的类文件在同一个地方:
new Scanner(ClassYouAreIn.class.getResourceAsStream("names.txt"), StandardCharsets.UTF_8);
添加回答
举报
0/150
提交
取消