无法让扫描仪查看文件
我无法理解为什么我无法让扫描仪读取我的.txt文件。最后,我采取了将数据作为字符串存储在我的程序中。但我仍然想知道为什么Scanner没有看到这个文件。无法让扫描仪查看文件
Scanner scan = new Scanner(new File("Test.txt"));
我也试过:
Scanner scan = new Scanner(new File("C:/Users/myusername/Desktop/Test.txt"));
两个结果FileNotFoundException异常被抛出。
该文本文件位于类文件和源文件所在的同一目录中。
有谁知道什么是错?
好吧,这真的很糟糕。我只是不知道为什么会发生这种情况。我知道这个文件存在。
System.out.println(System.getProperty("user.dir"));
显示我所在的目录是正确的。
其他人有什么想法?
剥离下来的问题,只有文件开始:或者你也可以尝试这个
File myFile = new File("Test.txt");
myFile.exists();
myFile.canRead();
...
然后继续分析该文件的路径:
myFile().getCanonicalPath();
...
如果java进程能够访问该文件,则扫描程序不会有任何问题。
如果这不会导致任何地方,我们将需要更多的信息:哪个版本的Java?你如何开始Java过程?
检查您尝试访问的文件是否为read-only
。如果是read-only
则取消选中它。通过省略扫描仪
FileInputStream fis=new FileInputStream(new File("C:/Users/myusername/Desktop/Test.txt"));
Scanner scan=new Scanner(fis);
好吧,我修好了。看来Torgeist是对的。它确实有助于消除这个问题。使用exists()
和canRead()
是非常有用的,因为它们返回false。即使我复制并粘贴,我在进入的确切文件路径中一定有错误。奇怪......只有其他可能的解释是,某些东西阻止了对桌面的访问,但这似乎不太可能。
使用逃逸的反斜杠或正斜杠没有区别。
File file = new File("C:/Users/UserName/Documents/Testing.txt");
与
File file = new File("C:\\Users\\OCB\\Documents\\Testing.txt");
都工作。
你修好了吗?如果你不提供解决方案,这不是一个答案。 – EJP
你确定这个文件真的存在吗?你能打开一个资源管理器并在路径中转储吗? –
在第一种情况下,文件需要位于当前目录中,而不一定是“类文件和源文件所在的目录”。在第二种情况下,你必须弄错文件名。 – EJP
正如@Tim正确指出的那样,路径是无效的。Windows路径应该包含反斜杠 – 2015-10-06 04:17:54