0

我想在特定字符串之后删除文件的内容,我做了一个临时文件并将数据复制到该文件中,并在完成重命名帽子文件后。

但是当我尝试时,我无法重命名文件,也无法删除旧文件。下面给出了我的代码,输出令人惊讶的是,如果它处于循环中,如何调用最后一行。

更新

 File inputFile = new File(propertiesFilePath+"/"+fileName);
    File tempFile = new File(propertiesFilePath+"/tempfile.properties");
    BufferedWriter writer=null;
    BufferedReader reader =null;
    System.out.println("Input file "+inputFile.exists()+"   "+tempFile.exists());
    try{
    reader = new BufferedReader(new FileReader(inputFile));
    writer = new BufferedWriter(new FileWriter(tempFile));
    String currentLine=null;    
    while((currentLine = reader.readLine()) != null) {
        if(currentLine.contains(KEY_STORE)) break;
        System.out.println("Lines "+currentLine);
        writer.write(currentLine);
     }

    }catch(Exception e){
        System.out.println("Exception in deleting config");
    }finally{
        writer.close();
        reader.close();

    }


    System.err.println("Inpute file delete "+inputFile.delete()); 

    return tempFile.renameTo(inputFile);

输出:

Input file true   true
Lines # ----------------------------------------------

Inpute file delete false      Renamed false

Lines # ---------------------------------------------------

Lines # 

Lines # ----------------------------------------------------

Lines #

Lines # --------------------------------------------------------

Lines # ---------------------------------------------------------

Lines # -------------------

Lines #

Lines # ---------------------------------------------------------------------------------
 -----------------------

Lines #------------------------------------------------------------------

Lines # ----------------------

Lines -----------------------

Lines 

我已经用(------)替换了文本,但是如何在循环完成之前打印在外观之外的 Sysout。

有没有更好的方法来实现我想要的。

4

2 回答 2

1

问题可能是您在 BufferedReader 中打开了文件。

File inputFile = new File(propertiesFilePath+"/"+fileName);

BufferedReader reader = new BufferedReader(new FileReader(inputFile));

return tempFile.renameTo(inputFile);

你永远不会关闭reader

reader.close()在重命名/删除文件之前尝试添加。

于 2013-07-22T20:22:04.363 回答
0

代码看起来不错,只有我注意到 tempFile.renameTo(inputFile) 发生了两次,在这两行中:

System.err.println("Inpute file delete "+inputFile.delete()+"      Renamed "+tempFile.renameTo(inputFile)); 
return tempFile.renameTo(inputFile);

我能想到的唯一原因是该进程可能没有执行这些操作的权限,因此重命名和删除都失败了。

请检查权限,希望这有帮助。

干杯!!

于 2013-07-22T20:08:56.893 回答