【发布时间】:2016-03-12 02:24:15
【问题描述】:
在我的 java 程序中,我试图将一个 .csv 文件保存到我的 data 文件夹中,该文件夹与主 jar 文件位于同一文件夹中。
以前,当我在 Windows 机器上运行我的程序时,我的相对路径是:data\\foo.csv。当我在 Linux 上尝试相同的操作时,它在根目录中创建并保存了名称为:data\\foo.csv 的文件。
然后我尝试将路径设置为data/foo.csv,但出现此错误:
java.io.FileNotFoundException: data/04-12-2015.csv (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at main.Main.saveResultsToFile(Main.java:121)
at main.Main.main(Main.java:92)
我已将目录的权限设置为 777(授予所有人所有权限)。
负责创建和保存文件的代码:
String fileName = "data/foo.csv"
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
编辑:
权限不是递归的,如果它改变了任何东西。只有data文件夹有777权限。
【问题讨论】:
-
为什么不用绝对路径?例如
String fileName= "/root/data/foo.csv" -
也许是因为这是一种不好的方法?如果我移动程序,或重命名它所在的文件夹怎么办?
-
你可以在你的代码中尝试类似的方法来获取绝对路径:stackoverflow.com/questions/320542/…
-
我不推荐它,因为它太复杂了
-
顺便说一句,绝对路径并不少见,如果您考虑一下,大多数已安装的程序都有绝对路径(例如在 linux ~/.config 文件夹中)