文件删除和Java重命名

时间:2011-05-31 14:06:36

标签: java file

我有以下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();
             }
         }
    } 

由于

4 个答案:

答案 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));

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