任何人都可以为我提供一个示例实现,使用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
请提供输入,我是否遗漏了这里的内容。
答案 0 :(得分:0)
如果使用StandardFileSystemManager()
,它将从类路径中读取其配置(来自core.xml和sandbox jar中的provider.xml和vfs-provider.xml文件)。因此,它已经使用http和https的提供程序进行了初始化。
您可以围绕添加提供商执行if (manager.hasProvider("http"))
,或者只是跳过添加提供程序并依赖自动配置。通常,您将使用VFS.getManager()
来获取已注册所有已知提供程序的完全配置的FileSystemManager。
如果您想手动配置管理器,则可以使用new DefaultFileSystemManger()
。 (这需要添加stuff like cache, replicator and so on)。