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
是这些示例的用户名。