Java中的文件删除和重命名



我有下面的Java代码,它将在xml中搜索特定的标记,然后向其中添加一些文本并保存该文件。我找不到将临时文件重命名为原始文件的方法。请提出建议。

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();
             }
         }
    } 

感谢

首先删除原始文件,然后重命名新文件:

File inputFile = new File("InfectiousDisease.xml");
File outFile = new File("tempFile.tmp");
if(inputFile.delete()){
   outFile.renameTo(inputFile);
}

重命名文件的一个好方法是.

File file = new File("path-here");
file.renameTo(new File("new path here"));

在您的代码中有几个问题。

首先,你的描述提到重命名原始文件并添加一些文本。你的代码没有这样做,它打开了两个文件,一个用于读取,一个用来写入(带有附加文本)。这是正确的做法,因为使用您正在使用的技术,在适当的位置添加文本是不可行的。

第二个问题是您正在打开一个临时文件。临时文件在关闭时会自动删除,因此您在添加文本时所做的所有工作在关闭文件后都会立即消失。

第三个问题是将XML文件修改为纯文本。这有时是因为XML文件是纯文本文件的子集,但没有迹象表明您试图确保输出文件是XML文件。也许您对输入文件的了解比前面提到的要多,但如果您想让它在100%的输入情况下都能正确工作,那么您可能需要创建一个SAX编写器,它可以写出SAX读取器读取的所有内容,并在正确的标记位置提供附加信息。

您可以使用

outFile.renameTo(new File(newFileName));

您必须确保这些文件当时没有打开。

相关内容

  • 没有找到相关文章

最新更新