Java文件"文件无法访问,因为它正被另一个程序使用"

时间:2016-12-23 15:47:55

标签: java swing file-io

我认为这是一个常见的错误,但我找到的线程的错误要么是C#,要么对我的问题没用。

我试图从文本文件中删除一行,并且这样做我创建一个临时文本文件并复制除该行之外的所有内容。关闭读取和写入流后,我收到一条错误消息,说我无法命名(复制)该文件,因为它正在被另一个程序使用。我认为问题可能是关闭流,但是在尝试复制文件之前就完成了,所以要知道问题是什么。到目前为止,我的代码是这样的:

 private void removeMailBtnActionPerformed(java.awt.event.ActionEvent evt) throws IOException{
    String origPath     = "emails/"+radioSelected(buttons).toLowerCase()+".txt";
    String cpyPath      = "emails/new"+radioSelected(buttons).toLowerCase()+".txt";
    Path originalPath   = Paths.get(origPath);
    Path copyPath       = Paths.get(cpyPath);
    String carrier      = null;

    BufferedReader copier = new BufferedReader(new InputStreamReader(new FileInputStream(originalPath.toString()), "ISO-8859-1"));
    BufferedWriter paster = new BufferedWriter(new FileWriter(copyPath.toString()));

    String compare = comboBoxMails.getSelectedItem().toString();


    while((carrier = copier.readLine()) != null)
    {
        if(!carrier.equals(compare))
        {
            paster.write(carrier);
            paster.newLine();
        }
    }

    copier.close();
    paster.close();

    //Files.delete(originalPath);
    Files.move(copyPath, originalPath, REPLACE_EXISTING);
    Files.delete(originalPath);
    test.sucessHandler();
}

0 个答案:

没有答案