首页 > 解决方案 > ftp 检索文件时是否需要临时文件?

问题描述

我正在使用ftpClient.retrieveFile()从 FTP 服务器下载文件,而另一个线程正在不断扫描目录以查找要处理的文件。我想知道这是否危险?可能是一个文件没有完成下载并被另一个线程处理?我应该使用.temp后缀来保存临时文件并在事务完成后重命名它吗?

标签: javaftpapache-commons-net

解决方案


通常,一旦创建文件,其他进程或线程就可以看到文件。因此,您的第二个线程可以在您完成写入文件之前查看并处理文件。正确的做法是使用临时扩展名(如您提到的 .temp)或临时目录。

在您的情况下,最合适的做法是使用某种同步机制,以便第二个线程在没有要处理的文件时阻塞,而第一个线程在文件完成下载时通知第二个线程。wait()Java 使用类的和notify()方法支持这些操作Object


推荐阅读