首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Commons VFS进行Http文件传输

使用Commons VFS进行Http文件传输
EN

Stack Overflow用户
提问于 2014-08-28 19:24:41
回答 1查看 1.5K关注 0票数 1

谁能为我提供一个示例实现使用Commons VFS API将文件从http服务器传输到本地。

我已经尝试了下面的代码,

代码语言:javascript
复制
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());
    }...

但我在尝试运行时遇到了下面的错误。

代码语言:javascript
复制
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

如果我在这里遗漏了什么,请提供输入。

EN

回答 1

Stack Overflow用户

发布于 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)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25547640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档