Java,从当前目录读取文件?

我想要一个java程序从当前目录(运行.class文件的目录)读取用户指定的文件名。

换句话说,如果用户指定文件名为“myFile.txt”,并且该文件已经在当前目录中:

reader = new BufferedReader(new FileReader("myFile.txt")); 

不起作用。 为什么?

我在Windows上运行它。

当前目录不是(必然).class文件所在的目录。它是进程的工作目录。 (即:启动JVM时所在的目录)

您可以使用getResourceAsStream()从与.class文件相同的目录加载文件。 这会给你一个InputStream,你可以用InputStreamReader把它转换成Reader。

尝试

 System.getProperty("user.dir") 

它返回当前的工作目录。

以上答案都不适用于我。 这是对我有用的东西。

假设您的类名是Foo.java,要访问与Foo.java相同的文件夹中的myFile.txt,请使用以下代码:

 URL path = Foo.class.getResource("myFile.txt"); File f = new File(path.getFile()); reader = new BufferedReader(new FileReader(f)); 

如果你知道你的文件将会存在于你的类中,那么这个目录将会在你的类path中。 在这种情况下,您可以确定此解决scheme将解决您的问题:

 URL path = ClassLoader.getSystemResource("myFile.txt"); if(path==null) { //The file was not found, insert error handling here } File f = new File(path.toURI()); reader = new BufferedReader(new FileReader(f)); 

您项目中的文件相对于您的src文件夹可用。 如果你知道哪个包或文件夹myfile.txt将在,说它在

 ----src --------package1 ------------myfile.txt ------------Prog.java 

你可以从Prog.java指定它的path为“src / package1 / myfile.txt”

这也起作用:

 Path file=Paths.get("Your file path"); InputStream is=Files.newInputStream(file); BufferedReader br=new BufferedReader(new InputStreamReader(is));