【问题标题】:How to close an open file in java [duplicate]如何在java中关闭打开的文件[重复]
【发布时间】:2015-11-14 14:23:36
【问题描述】:

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

【问题讨论】:

  • outputStream.close();,除非你想在另一个程序中关闭文件。
  • 我试过了,但它仍然抛出一个错误,因为 -->。 (该进程无法访问该文件,因为它正在被另一个进程使用)
  • 首先要确定是哪个进程打开了文件? Java,excel,还有别的吗?你知道是哪个进程打开的吗?
  • 我还建议你检查文件是否被另一个进程打开,这样:stackoverflow.com/a/9341572/3779214
  • @tombrown52,只是为了检查我的应用程序,我在系统中保持打开状态,就像普通的 excel 文件一样,当时我抛出了那种错误。

标签: java excel file command


【解决方案1】:

如何删除/关闭打开的 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();

【讨论】:

  • 试过这种方法,它对我有用
【解决方案2】:

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

【讨论】:

  • 如果您自己打开了文件,则很难强制关闭它。但是,如果您正在共享文件并且 其他人 已将其打开,则可以使用net files <id> /close 命令将其关闭(其中<id> 是通过运行net files 显示的指定文件的ID没有任何参数)
  • 我将对此进行编辑,但如果不够,请告诉我。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-24
    • 2014-11-18
    • 1970-01-01
    • 2015-10-25
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多