Java:扫描文件夹查找特定文件的有效方法



我正在与Java应用程序联系外部服务。

流程如下:->我生成一个XML文件,并将其放在一个文件夹中,然后服务处理该文件并返回另一个具有相同名称且扩展名为.out的文件

现在,当我把文件放入文件夹后,我从一个循环开始,直到我得到那个文件,这样我就可以读取结果了。

代码如下:

        fileName += ".out";
        File f = new File(fileName);
        do
        {
            f = new File(fileName);
        } while (!f.exists());
        response = readResponse(fileName); // got the response now read it

我的问题来了,我在做正确的方式,有没有更好/更有效的方式来等待文件?

一些信息:我在WinXP上运行我的应用程序,通常它需要不到一秒钟的外部服务来响应一个文件,我每天向这个服务发送大约200个请求。存放结果文件的文件夹的路径总是相同的。

欢迎大家提出建议。

感谢您的宝贵时间。

没有理由重新创建File对象。它只表示文件位置,不管文件是否存在。此外,您可能不想要一个没有至少短延迟的循环,否则它只会使处理器满负荷,直到文件存在。您可能想要这样做:

File file = new File(filename);
while (!file.exists()) {
    Thread.sleep(100);
}

编辑: Ingo在评论中提出了一个很好的观点。文件可能并不完全存在,因为它存在。确保文件准备就绪的一种方法是,在第一个文件完全写入后,让第一个进程创建第二个文件。然后让Java程序检测第二个文件,删除它,然后安全地读取第一个文件。

相关内容

  • 没有找到相关文章

最新更新