在Java中从当前目录读取文件

3
我有一个Java项目,需要读取一个文件。由于该文件位于当前目录下,所以我这样做:
String dataset = "./myFile.dat";

但是我遇到了一个问题:java.io.FileNotFoundException,说找不到文件。

如何解决这个问题?如果我给出整个路径就可以正常工作...

String dataset = "C:\\eclipse\\workspace\\p1\\src\\myFile.dat";

如果在前面添加 System.getProperty("user.dir") 会发生什么? - cwallenpoole
2
也许这个可以帮到您:https://dev59.com/b3M_5IYBdhLWcg3wNgKY - talnicolas
2个回答

1
如果myFile.dat是应用程序资源,则应将其包含在运行时类路径上的Jar中。然后可以使用以下方法形成资源的URL..
URL urlToData = this.getClass().getResource("path/in/jar/to/myFile.dat");

不要依赖于user.dir属性。根据应用程序的启动方式,它可能指向与应用程序或数据目录非常不同的位置。

0

试试这个:

String dataset = System.getProperty("user.dir") + "/myFile.dat"; 

这是一种脆弱的方法。请查看我的答案以及@talnicolas链接的线程获取更多详细信息。 - Andrew Thompson
起初我没有注意到文件名前面的/。这使得代码更加脆弱。File(File, String)构造函数会考虑不同平台上的分隔符。如果要构建文件对象的字符串表示形式(我不建议这样做),请使用System.getProperty("file.separator") - Andrew Thompson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接