Java不会删除文件

时间:2015-01-23 16:47:34

标签: java file

最初函数Attemps第一次工作正常,我在文件中详细说明请求并将内容移动到临时文件,然后我删除日志文件并重命名文件" temporaneo.txt" in" log.txt"。 如果你第二次启动这个功能,但似乎程序没有更多的成功,特别是日志文件没有被删除,文件" temporaneo.txt"没有在" log.txt"中重命名 为什么会这样?我弄错了程序?我真的不能处理它们,而这个功能第一次表现很好。

public void Attemps()throws IOException
 {
   try 
   {
       BufferedReader in = new BufferedReader(new FileReader("log.txt"));
       PrintWriter out = new PrintWriter(new File("temporaneo.txt"));

       String line; 
       String params[]; 

       while((line = in.readLine()) != null)
       {
           params = line.split(";", 2);
            if(client.equals(params[0])) 
            { 
                int accessi_aggiornati = Integer.parseInt(params[1]);
                accessi_aggiornati--;
                params[1] = String.valueOf(accessi_aggiornati);
                out.print(params[0] + ";" + params[1]);
            }
            else
            {
                out.println(line); 
       }
    }
       in.flush(); //log
       out.flush(); //temporaneo
       in.close();
       out.close();

       //Delete log and rename temporary file
       File f1 = new File("log.txt");
       f1.delete();     
       File f2 = new File("temporaneo.txt");
       f2.renameTo(f1);

       System.out.println("Update complete");
   }catch(Exception e)
   {
       e.printStackTrace();
   }
}

2 个答案:

答案 0 :(得分:0)

  1. BufferReader没有flush()方法。
  2. 以上代码不会解决您的目的,因为它本质上是循环的
  3. 您正在将log.txt文件的内容复制到temporaneo.txt - >然后删除log.txt文件 - >然后将temporaneo.txt名称重命名为log.txt

    所以,最后你有log.txt文件,内容相同。

    最终代码如下: -

    public void Attemps() {
        try {
            BufferedReader in = new BufferedReader(new FileReader(
                    "log.txt"));
            PrintWriter out = new PrintWriter(new File("temporaneo.txt"));
    
            String line;
            String params[];
    
            while((line = in.readLine()) != null)
       {
           params = line.split(";", 2);
            if(client.equals(params[0])) 
            { 
                int accessi_aggiornati = Integer.parseInt(params[1]);
                accessi_aggiornati--;
                params[1] = String.valueOf(accessi_aggiornati);
                out.print(params[0] + ";" + params[1]);
            }
            else
            {
                out.println(line); 
       }
    }
            // in.flush(); // log
            out.flush(); // temporaneo
            in.close();
            out.close();
    
            // Delete log and rename temporary file
            File f1 = new File("log.txt");
            f1.delete();
            boolean isCreated = f1.createNewFile();
    
            System.out.println("Update complete=" + isCreated);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

答案 1 :(得分:-1)

BufferedReader并不知道名为" flush()"的方法。 - Java 7或8中的更新版本。 删除它,一切都应该正常。