每隔五分钟需要将数据重复性写入一个文件中。写了一段代码,但每隔五分钟新数据会将原有数据覆盖掉。请教达人如何解决这个问题。 具体代码如下:
import java.io.*;
import java.util.*;public class WriteFile
{
  public static void main(String[] args) 
  {
     final WriteFile tf = new WriteFile();
     Timer t = new Timer();
     try 
     {
t.schedule(new TimerTask(){
public void run()
{
   tf.outPut();
}},0,300000);
     }
     catch (Exception ex4) 
     {
        System.out.println (ex4.toString());
     }
  }
  public void outPut()
  {
    try
    {
File myFile = new File("E:\\newFile.txt");
myFile.createNewFile();
    }
    catch(Exception ex2)
    {
      System.out.println("can not make file");
    }
    try
    {
     PrintWriter out = new PrintWriter(new FileWriter("E:\\newFile.txt"));
     for (int k = 1; k<=10; k++)
     {
        String serverName = "@labp2"+String.valueOf(k);
out.append(serverName);
out.append("\r\n");
      }
     }
     catch(Exception ex3)
     {
System.out.println (ex3.toString());
     }
  out.close();
  }
}

解决方案 »

  1.   

    关键是在out.close(); 这句。每次写你都new了文件,当然就回覆盖掉原来的。
    可以这样public   static   void   main(String[]   args)  
        {
              final   WriteFile   tf   =   new   WriteFile();
              Timer   t   =   new   Timer();
              try  
              {
        File   myFile   =   new   File("E:\\newFile.txt");
        myFile.createNewFile();
         PrintWriter   out   =   new   PrintWriter(new   FileWriter("E:\\newFile.txt"));
    t.schedule(new   TimerTask(){
    public   void   run()
    {
          tf.outPut(out);
    }},0,300000);
        out.close();
              }
              catch   (Exception   ex4)  
              {
                    System.out.println   (ex4.toString());
              }
        } public   void   outPut(PrintWriter   out)
        {
           try
            {
             
              for   (int   k   =   1;   k <=10;   k++)
              {
                    String   serverName   =   "@labp2"+String.valueOf(k);
    out.append(serverName);
    out.append("\r\n");
                }
              }
              catch(Exception   ex3)
              {
    System.out.println   (ex3.toString());
              }
        } 
      

  2.   

    你要不覆盖原来的,构造时加true.见下面.
    PrintWriter       out       =       new       PrintWriter(new       FileWriter("E:\\newFile.txt",true)); 
      

  3.   

    import java.io.*;
    import java.util.Date;
    public class Filetest3 {    public Filetest3() {
        }
        public static void main (String[] args)throws Exception {
         File f=new File("D:\\a.txt");
         f.createNewFile();
       FileOutputStream out=new FileOutputStream("D:\\a.txt");
       Date d=new Date();
      long   da=d.getTime(); 
       String str= Long.toString(da); 
     byte[] buffer= str.getBytes();
        while(2>1){
        out.write(buffer);
        Thread.sleep(5000);
         }
        out.close();
    }
        
    }