我正在考虑将Apache Commons VFS用于需要通过ftp,sftp和https在本地服务器和远程服务器之间传输文件的项目。
标准用法示例是从静态方法获取FileSystemManager
FileSystemManager fsManager = VFS.getManager();
跨多个线程使用相同的FileSystemManager是否安全?
第二个问题是关于在finally块中正确释放资源:我在Javadoc API中找到以下方法:
但我不清楚哪些资源通常应该关闭。
答案 0 :(得分:1)
文件管理器和文件系统对象应该是线程安全的,但是我不打算把它活在上面。一些内部锁定(特别是围绕重命名)依赖于FileObject的实例,所以你不应该使用不保留它们的FileCache(即默认缓存很好)。
不应同时使用FileContent和流(事实上,FileContent.close()仅作用于当前线程的流)。
此区域存在一些资源泄漏(希望所有资源都在2.1-SNAPSHOT中修复)。
答案 1 :(得分:0)
VFS.getManager提供单个管理器即。单一访问文件系统,所以我不建议从多线程环境中使用它。您可以创建自己的DefaultFileSystemManager并在完成后使用close方法。