“Java文件”;无法访问文件,因为另一个程序正在使用它;

“Java文件”;无法访问文件,因为另一个程序正在使用它;,java,swing,file-io,Java,Swing,File Io,我相信这是一个常见的错误,但我发现的线程的迷雾要么对C#有用,要么对我的问题没用 我试图从文本文件中删除一行,为此我创建了一个临时文本文件,并复制了除该行以外的所有内容。关闭读写流后,我收到一个错误,说我无法命名(复制)文件,因为它正在被另一个程序使用。我原以为问题可能是流的关闭,但它是在试图复制文件之前完成的,所以我不知道问题是什么。到目前为止,我的代码如下: private void removeMailBtnActionPerformed(java.awt.event.ActionEve

我相信这是一个常见的错误,但我发现的线程的迷雾要么对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();
}

你是说这个方法总是失败,因为你引用的错误,不管选择哪种输入文件?你是说任何其他程序都无法打开目标文件?@JohnBollinger已经尝试重新启动电脑并立即运行,stull无法工作。@JohnBollinger还尝试了不同的文件,得到了相同的结果