如何在 java 中关闭打开的文件

How to close an open file in java

我正在尝试在 java 中写入一个 excel 文件,并将其保存在共享文件夹中。但如果文件当前由任何人在任何系统上打开,则会引发错误。那么有什么方法可以通过 java 命令关闭 excel 文件吗?

如果文件实际上是在某人的 window 中打开的(就像您打开 ms word 文档一样),那么将无法从 java 关闭他们计算机上的文件程序。如果您只需要一次性更新该文件,我建议您创建另一个具有不同名称的文件,然后将所需目标的内容手动替换为您以编程方式创建的文件的内容。

根据文件的打开方式,您可以通过 Runtime.exec() 执行命令 net files <id> /close。您还可以结合 psexec 命令来关闭远程计算机上的文件。

这个答案似乎描述了类似的情况,你只需要使 java 运行 命令: https://superuser.com/questions/643916/remotely-close-open-shared-files

如何delete/close 打开excel 文件。所以你必须在删除前自动关闭文件...

    final File file=new File("E:\book1.xlsx");
    Runtime.getRuntime().exec(
            "cmd /c taskkill /f /im excel.exe");

    new Thread(new Runnable() {

        @Override
        public void run() {

            try {
                   Thread.currentThread().sleep(2000);// you need to wait 1-2 sec to close file before delete
                   file.delete();   

               } catch (InterruptedException e) {

                e.printStackTrace();
            } 
        }
    }).start();