java - ftp 检索文件时是否需要临时文件?
问题描述
我正在使用ftpClient.retrieveFile()
从 FTP 服务器下载文件,而另一个线程正在不断扫描目录以查找要处理的文件。我想知道这是否危险?可能是一个文件没有完成下载并被另一个线程处理?我应该使用.temp
后缀来保存临时文件并在事务完成后重命名它吗?
解决方案
通常,一旦创建文件,其他进程或线程就可以看到文件。因此,您的第二个线程可以在您完成写入文件之前查看并处理文件。正确的做法是使用临时扩展名(如您提到的 .temp)或临时目录。
在您的情况下,最合适的做法是使用某种同步机制,以便第二个线程在没有要处理的文件时阻塞,而第一个线程在文件完成下载时通知第二个线程。wait()
Java 使用类的和notify()
方法支持这些操作Object
。
推荐阅读
- javascript - 网页刷新时抖动
- mysql - 选择具有优先级值的唯一行
- express - Azure 事件 Webhook 验证失败
- css - 反应:当状态改变时,CSS不会重新计算网格容器中的高度
- python-3.x - 我的 requests-html 不起作用并给出错误“没有名为 email.utils 的模块。”
- xilinx - yosys综合时如何提供xilinx原语的映射信息
- python - 带有buildozer的adroid中的kivy应用程序,终端循环“#waiting for application to start”
- node.js - 使用 findOne() 时 NeDB 没有回调
- javascript - 为动态创建的按钮添加随机功能
- go - 如何在golang go-face中捕获每张脸