gpt4 book ai didi

java - 使用 Commons VFS 进行 Http 文件传输

转载 作者:太空宇宙 更新时间:2023-11-04 14:36:08 25 4
gpt4 key购买 nike

任何人都可以为我提供一个使用 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

请提供我是否在这里遗漏了什么的信息。

最佳答案

如果您使用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 )。

关于java - 使用 Commons VFS 进行 Http 文件传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25547640/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com