【发布时间】:2013-07-17 02:48:54
【问题描述】:
我在创建 FileWriter 时指定了文件位置的完整路径,但我没有看到正在创建的文件。在文件创建过程中我也没有收到任何错误。
这是我的代码的 sn-p:
public void writeToFile(String fullpath, String contents) {
File file = new File(fullpath, "contents.txt");
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
}
try {
BufferedWriter bw = new BufferedWriter(new FileWriter(file.getAbsoluteFile()));
bw.write(contents);
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
完整路径是"D:/codes/sources/logs/../../bin/logs"。
我已经搜索了整个目录,但在任何地方都找不到该文件。
如果我只指定文件名 [File file = new File("contents.txt");] ,它可以保存文件的内容,但它不会放在我的首选位置。
如何将文件内容保存到首选位置?
更新: 我使用 file.getAbsolutePath() 打印了完整路径,并且得到了正确的目录路径。 [D:\codes\sources\logs....\bin\logs\contents.txt] 但是当我在目录中查找文件时,我找不到它。
【问题讨论】:
-
你真的有“../..”吗?如果是这样,您需要查看
D:/codes/bin/logs -
对于 Java 7,您也可以这样做:
Files.write(Paths.get(fullPath), contents.getBytes("UTF-8")); -
createNewFile()不需要。 -
文件正在创建,但不是您正在查找的位置,除非出现异常。
exists()/createNewFile()块完全浪费时间和空间。new FileWriter()无论如何都会导致操作系统这样做,现在您正在强制它添加对您刚刚创建的文件的删除。不要编写无意义的代码。new FileWriter(file)也可以。 -
您是否尝试过查看
file.getCanonicalPath()返回的内容?是你预期的吗?
标签: java file java-io filewriter