无法让扫描仪查看文件

Cannot get Scanner to See File

我不明白为什么我无法让扫描仪读取我的 .txt 文件。最后我求助于将数据作为字符串存储在我的程序中。但我仍然想知道为什么 Scanner 看不到这个文件。

Scanner scan = new Scanner(new File("Test.txt"));

我也试过:

Scanner scan = new Scanner(new File("C:/Users/myusername/Desktop/Test.txt"));

两者都导致抛出 FileNotFoundException。

文本文件与 class 文件和源文件位于同一目录。

有谁知道这是怎么回事??

好吧,这真的很糟糕。我只是不知道为什么会这样。我知道该文件确实存在。

System.out.println(System.getProperty("user.dir"));

表明我所在的目录是正确的。

还有其他人有什么想法吗?

检查您尝试访问的文件是否为 read-only。如果是 read-only 则取消选中它。或者你也可以试试这个:

FileInputStream fis=new FileInputStream(new File("C:/Users/myusername/Desktop/Test.txt"));
Scanner scan=new Scanner(fis);

通过省略扫描仪并仅从文件开始来消除问题:

File myFile = new File("Test.txt");
myFile.exists();
myFile.canRead();
...

然后继续分析文件的路径:

myFile().getCanonicalPath();
...

如果 java 进程能够访问该文件,那么扫描器不会有任何问题。

如果这没有任何用处,我们将需要更多信息:哪个版本的 java?您如何启动 java 流程?

好的,我修好了。看来 Torgeist 是对的。它确实有助于解决问题。使用 exists()canRead() 非常有用,因为它们返回 false。即使我复制并粘贴,我输入的确切文件路径一定有问题。奇怪...唯一可能的解释是某些东西阻止了对桌面的访问,但这似乎不太可能。

使用转义反斜杠或正斜杠没有区别。

File file = new File("C:/Users/UserName/Documents/Testing.txt");

对比

File file = new File("C:\Users\OCB\Documents\Testing.txt");

两者都有效。