Linux中的Java文件路径

我有一个相当愚蠢的问题,但我无法找到解决方案:

当我尝试读取文件时,我得到“文件未找到错误”是运行时。 它虽然编译了文件。

我在Linux上,所以我使用的语句如下:

Scanner s = new Scanner(new File("home/me/java/ex.txt")); 

它给了我一个运行时错误:

 /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.(FileInputStream.java:137) at java.util.Scanner.(Scanner.java:653) at test.main(test.java:14) 

我尝试按照文件名的方式改变所有可能的东西,但似乎没有任何工作。

关于为什么会发生这种情况的任何线索? java默认情况下在哪里查找文件?

看起来你错过了一个领先的斜杠。 也许试试:

 Scanner s = new Scanner(new File("/home/me/java/ex.txt")); 

(至于默认情况下它查找文件的位置,它是JVM运行的位置,用于相对路径,例如你问题中的路径)

我认为Todd是正确的,但我认为还有另外一件事你应该考虑。 您可以在运行时从JVM可靠地获取主目录,然后您可以创建相对于该位置的文件对象。 它不是那么麻烦,如果你搬到另一台计算机或操作系统,它会让你感激不尽。

 File homedir = new File(System.getProperty("user.home")); File fileToRead = new File(homedir, "java/ex.txt"); 

官方文档清楚地描述了Path

Linux语法: /home/joe/foo

Windows语法: C:\home\joe\foo


注意: joe是这些示例的用户名。