我正在更改文件的内容,因此我逐行读取文件,替换我想要的内容并逐行写入临时文件。处理整个文件时,我删除原始文件,并将tempfile重命名为原始文件名。 像这样
File orginialFile = new File("C:\\java\\workspace\\original.xml");
File tempFile = File.createTempFile("tempfile", ".tmp", new File(C:\\java\\workspace\\"));
while ((str_String = reader.readLine()) != null) {
//read lines and replace and write lines
}
orginialFile .delete();
tempFile.renameTo(new File("C:\\java\\workspace\\original.xml"));
完成此操作后,我请求临时文件的绝对路径(tempFile.getAbsolutePath();)。但这给了我 c:\ java \ workspace \ tempfile3729727953777802965.tmp(数字改变程序的每次运行)而不是c:\ java \ workspace \ original.xml
为什么?
我调试了它,就在我请求绝对路径之前,我检查了c:\ java \ workspace(windows explorer)并且没有临时文件。只有原始文件。
所以这个过程运行正常,我只是想知道为什么它没有显示重命名的绝对路径。 (我会用它来记录)
THX
答案 0 :(得分:1)
在java.io.File
的文档中,与java.nio.file
包的互操作性之前:
File类的实例是不可变的;也就是说,一旦创建,File对象表示的抽象路径名永远不会改变。
因此它不会显示重命名的绝对路径。
答案 1 :(得分:1)
删除前缺少reader.close()
。 可能为我们编辑过。您也可以这样做:
tempFile.renameTo(originialFile);
答案 2 :(得分:0)