2017-03-14 51 views
0

我有file.I问题,我有应用程序1和应用程序2,应用程序1创建文件(有处理时间)。当过程应用程序1结束时,我想从应用程序2中创建的文件中使用。我使用轮询检查创建的文件,但无法理解文件是否关闭(流程应用程序1结束)。 源应用程序1已锁定,我想要更改源应用程序2.Java文件关闭

+0

虽然从应用程序写1,将文件保存为' .extension.part'。完成写作后,将其重命名为所需的名称。因此,您的应用程序2将获得完整的文件 –

+0

我无法访问应用程序1源。 –

+0

在'while(true)'中使用'try catch'。继续尝试打开文件。一旦你能够打开文件,从循环中断开。 –

回答

1

既然你没有访问该应用1.我们唯一能做的事情就是从应用程式2.

如果你是在Windows系统上,该系统将不允许您更改文件名如果其他进程正在读取/写入文件。

您可以尝试重新命名应用程序2中的输出文件。如果工作正常,则该文件未由其他进程打开,您可以开始处理输出文件。当然你可能希望改回文件名。

renameTo Java Doc

请注意,* NIX系统会有不同的行为

0

您可以使用该文件的临时名称,然后在完全写入后将其重命名为正确的名称。

您可以创建一个“.lock”文件来表明它被锁定以便读取或写入。读取或写入完成后,您可以删除锁定文件。如果锁定文件不存在,则每个应用程序只能读取或写入文件(并且应在执行读取或写入操作之前创建锁定文件,并在完成后立即删除它)。

+0

不幸的是,您的答案需要控制所有涉及的应用程序,并且OP无法控制将创建文件的应用程序。 –

+0

啊,好的,我发现很难解析这个问题。 –