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));