无法让扫描仪查看文件
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");
两者都有效。
我不明白为什么我无法让扫描仪读取我的 .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");
两者都有效。