我有一个相当愚蠢的问题,但我无法找到解决方案:
当我尝试读取文件时,我得到"文件未找到错误"是运行时.它虽然编译了文件.
我在Linux上,所以我使用的语句如下:
Scanner s = new Scanner(new File("home/me/java/ex.txt"));
Run Code Online (Sandbox Code Playgroud)
它给了我一个运行时错误:
/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:137)
at java.util.Scanner.<init>(Scanner.java:653)
at test.main(test.java:14)
Run Code Online (Sandbox Code Playgroud)
我尝试按照文件名的方式更改所有可能的内容,但似乎没有任何效果.
关于为什么会发生这种情况的任何线索?默认情况下java在哪里查找文件?
Tod*_*ner 17
看起来你错过了一个领先的斜杠.也许试试:
Scanner s = new Scanner(new File("/home/me/java/ex.txt"));
Run Code Online (Sandbox Code Playgroud)
(至于默认情况下它查找文件的位置,它是从相对路径运行JVM的位置,就像您在问题中所拥有的那样)
Bil*_*ill 13
我认为Todd是正确的,但我认为还有另外一件事你应该考虑.您可以在运行时从JVM可靠地获取主目录,然后您可以创建相对于该位置的文件对象.它并没有那么多麻烦,如果您转移到另一台计算机或操作系统,这将是您会欣赏的.
File homedir = new File(System.getProperty("user.home"));
File fileToRead = new File(homedir, "java/ex.txt");
Run Code Online (Sandbox Code Playgroud)