我有以下Java代码,它将在xml中搜索特定标记,然后将向其中添加一些文本并保存该文件。我找不到将emporary文件重命名为原始文件的方法。请建议。
import java.io.*;
class ModifyXML {
public void readMyFile(String inputLine) throws Exception
{
String record = "";
File outFile = new File("tempFile.tmp");
FileInputStream fis = new FileInputStream("InfectiousDisease.xml");
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
FileOutputStream fos = new FileOutputStream(outFile);
PrintWriter out = new PrintWriter(fos);
while ( (record=br.readLine()) != null )
{
if(record.endsWith("<add-info>"))
{
out.println(" "+"<add-info>");
out.println(" "+inputLine);
}
else
{
out.println(record);
}
}
out.flush();
out.close();
br.close();
//Also we need to delete the original file
//outFile.renameTo(InfectiousDisease.xml);//Not working
}
public static void main (String[] args) {
try
{
ModifyXML f = new ModifyXML();
f.readMyFile("This is infectious disease data");
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
由于
答案 0 :(得分:8)
首先删除原始文件,然后重命名新文件:
File inputFile = new File("InfectiousDisease.xml");
File outFile = new File("tempFile.tmp");
if(inputFile.delete()){
outFile.renameTo(inputFile);
}
答案 1 :(得分:1)
重命名文件的好方法是。
File file = new File("path-here");
file.renameTo(new File("new path here"));
答案 2 :(得分:1)
在您的代码中有几个问题。
首先,您的说明会提到重命名原始文件并向其中添加一些文字。您的代码不会这样做,它会打开两个文件,一个用于阅读,另一个用于写入(带有附加文本)。这是正确的做事方式,因为使用您正在使用的技术在原地添加文本并不可行。
第二个问题是您正在打开一个临时文件。临时文件在关闭时自行删除,因此您关闭文件后,添加文本的所有工作都会消失。
第三个问题是您将XML文件修改为纯文本。这有时可用,因为XML文件是纯文本文件的子集,但没有迹象表明您试图确保输出文件是XML文件。也许你对输入文件的了解比你提到的要多,但是如果你想让它在100%的输入情况下正常工作,你可能想要创建一个SAX编写器,写出所有SAX读取器读取,附加信息在正确的标签位置。
答案 3 :(得分:0)
您可以使用
outFile.renameTo(new File(newFileName));
您必须确保这些文件当时未打开。