谁能为我提供一个示例实现使用Commons VFS API将文件从http服务器传输到本地。
我已经尝试了下面的代码,
StandardFileSystemManager manager = new StandardFileSystemManager();
manager.init();
if ("http".equals(source.getScheme())) {
manager.addProvider("http", new HttpFileProvider());
manager.setCacheStrategy(CacheStrategy.ON_CALL);
manager.setFilesCache(new SoftRefFilesCache());
} else if ("https".equals(source.getScheme())) {
manager.addProvider("https", new HttpsFileProvider());
manager.setCacheStrategy(CacheStrategy.ON_CALL);
manager.setFilesCache(new SoftRefFilesCache());
}...但我在尝试运行时遇到了下面的错误。
Caused by: org.apache.commons.vfs2.FileSystemException: Multiple providers registered for URL scheme "http".
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.addProvider(DefaultFileSystemManager.java:180)
at org.apache.commons.vfs2.impl.DefaultFileSystemManager.addProvider(DefaultFileSystemManager.java:158)
at com.scb.smartbatch.adapters.VFSAdapter.copyFiles(VFSAdapter.java:150)
at com.scb.smartbatch.adapters.VFSAdapter.send(VFSAdapter.java:762)
... 33 more如果我在这里遗漏了什么,请提供输入。
发布于 2015-01-06 07:34:59
如果您使用StandardFileSystemManager(),它将从类路径(从核心和沙箱jar中的provider.xml和vfs-provider.xml文件)读取其配置。因此,它已经使用http和https的提供程序进行了初始化。
您可以围绕添加提供程序执行if (manager.hasProvider("http")),也可以直接跳过添加提供程序并依赖于自动配置。通常,您将使用VFS.getManager()来获得一个完全配置的FileSystemManager,其中注册了所有已知的提供者。
如果您希望完全手动配置管理器,则可以使用new DefaultFileSystemManger()。(这需要添加stuff like cache, replicator and so on)。
https://stackoverflow.com/questions/25547640
复制相似问题