新手,写了个小程序,但是好像出了点问题
                  //分别在文件的第一行,第二行,以及最后一行插入指定字符,形成xml文件格式
 
public File insertStringInFile(String filename)throws Exception {   

    //创建文件
    File outFile = new File("name.tmp");
    outFile.createNewFile();
    File inFile=new File(filename);
    // 输入   
    BufferedReader in=new BufferedReader(new FileReader(inFile));      
    // 输出   
    BufferedWriter out=new BufferedWriter(new FileWriter(outFile));
    
    int head=1;
             String headfile="<?xml version=\"1.0\"?>";
             String startfile="<xmlfile>";
             String endfile="</xmlfile>";
 

 
 String thisline=in.readLine();
 int i=1;
 while(thisline!=null)
 {
 if(i==head)
 {
 out.write(headfile);
 out.write("\n");
 out.write(startfile);
 out.write("\n");
 } 
 out.write(thisline);
 out.write("\n");
 i++;
 thisline=in.readLine();
 }
 out.write(endfile);  
 out.flush();
 out.close();
 in.close();
 
 inFile.delete();//debug时发现这个方法没有实现
 outFile.renameTo(inFile);//直接导致下面的方法出了问题
 return outFile;//应该返回谁了呢?如果上面运行成功应该是返回outFile

}

解决方案 »

  1.   


    inFile.delete();//debug时发现这个方法没有实现
    outFile.renameTo(inFile);//直接导致下面的方法出了问题改成Thread.sleep(1000);//可以省略
    outFile.renameTo(inFile);
    inFile.delete();
      

  2.   

    为什么这么麻烦啊?
    你直接建立一个随机访问文件的读写器,直接在inFile上插入不就行了,你的copy和改名都没必要
      

  3.   

    //--读出文件内容
    FileOperate f = new FileOperate();
    String path = f.getPath();
    File infile = new File(path+"test.txt");
    BufferedReader in=new BufferedReader(new FileReader(infile));
    StringBuffer str = new StringBuffer();
    str.append("<?xml version=\"1.0\"?>");
    str.append("<abc>");
    String temp = in.readLine();
    while(temp!=null)
    {
    str.append(temp);
    temp = in.readLine();
    }
    str.append("</abc>");
    //--写入文件
    String outfilePath = path+"test1.txt";
    File outFile = new File(outfilePath);
    outFile.createNewFile();
    BufferedWriter out=new BufferedWriter(new FileWriter(outFile,false));
    out.write(str.toString());
    out.flush();
    out.close();
    in.close();

    infile.delete();
    infile = new File(path+"test.txt");
    outFile.renameTo(infile);
    楼主看到加红色标志的那行没。删除后,必须再new出来,就可以。
      

  4.   

    将整个类贴一下。那个测试文件在 bin路径里。不过楼主走了弯路,其实只要将文件以不追加的形式打开,然后将文件内容修改后再写入。就OK了,根本不用这么麻烦,效率还低。下面这段代码是修改你的。/**   
    * @Title: FileOperate.java 
    * @Package file 
    * @Description: TODO(用一句话描述该文件做什么) 
    * @author youjianbo    
    * @date 2010-9-7 下午05:26:52 
    * @version V1.0   
    */  
    package file;import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;public class FileOperate 
    { /**
     * @param args
     */
    public static void main(String[] args) throws Exception
    {
    //--读出文件内容
    FileOperate f = new FileOperate();
    String path = f.getPath();
    File infile = new File(path+"test.txt");
    BufferedReader in=new BufferedReader(new FileReader(infile));
    StringBuffer str = new StringBuffer();
    str.append("<?xml version=\"1.0\"?>");
    str.append("<abc>");
    String temp = in.readLine();
    while(temp!=null)
    {
    str.append(temp);
    temp = in.readLine();
    }
    str.append("</abc>");
    //--写入文件
    String outfilePath = path+"test1.txt";
    File outFile = new File(outfilePath);
    outFile.createNewFile();
    BufferedWriter out=new BufferedWriter(new FileWriter(outFile,false));
    out.write(str.toString());
    out.flush();
    out.close();
    in.close();

    infile.delete();
    infile = new File(path+"test.txt");
    outFile.renameTo(infile);
    }
    public String getPath()
    {
    return  getClass().getClassLoader().getResource("").getPath();
    }
    }