在java窗口中覆盖文件时出错

时间:2016-09-11 04:04:56

标签: java eclipse

File inputFile = new File("abc.txt");
File tempFile = new File("temp.txt");
try{
    FileInputStream fis = new FileInputStream(tempFile);
    byte[] data = new byte[(int) tempFile.length()];
    fis.read(data);
    fis.close();

    String source = new String(data, "UTF-8");
    try{
        while(!inputFile.renameTo(inputFile)) {
            Thread.sleep(10);
        }
    }
    catch(Exception e)
    {
        System.out.println("Some error occured");
    }

    FileWriter newfile = new FileWriter(inputFile, false);
    newfile.write(source);
    newfile.close();
    if (!tempFile.delete()) {
        System.out.println("Could not delete file");
        return;
    } 
    else
    {
        System.out.println("Successful");
    }
}                       
catch(IOException e1)
{
    e1.printStackTrace();
}   

在此计划中,我尝试将data中的所有temp.txt复制到字符串变量source中。然后用该字符串覆盖文件abc.txt

起初它向我展示了一个例外:

  

"进程无法访问该文件,因为它正由另一个进程使用。"

然后我在互联网上找到了一个重命名文件的解决方案,如代码所示。现在,它没有给我错误,但程序根本没有终止。这个程序有什么问题?为什么不给出任何错误?请帮帮我。非常感谢你。

PS:我使用的是Windows 10和Eclipse Juno作为IDE。

1 个答案:

答案 0 :(得分:2)

您编写的程序为我工作并成功终止。无需重命名文件。

try
    {
     String content = new String(Files.readAllBytes(Paths.get("temp.txt")));
     Files.write(Paths.get("abc.txt"), content.getBytes(), StandardOpenOption.CREATE);
    }
    catch(Exception ex)
    {
        ex.printStackTrace();
    }