Использование Commons-VFS через HTTP - PullRequest
2 голосов
/ 09 августа 2011

Я пытаюсь просматривать и извлекать файлы с HTTP-сервера, используя Commons VFS для реализации функции просмотра каталогов, найдите ниже мой фрагмент кода,

try {
    StandardFileSystemManager manager = new StandardFileSystemManager();
    manager.addProvider("http", new HttpFileProvider());
    manager.setCacheStrategy(CacheStrategy.ON_CALL);
    manager.setFilesCache(new SoftRefFilesCache());
    FileObject fileObject = manager.resolveFile("http://localhost");
    System.out.println(fileObject.getChildren());
} catch (FileSystemException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

Но когда я запускаю этот код, я получаю следующее исключение,

org.apache.commons.vfs.FileSystemException: Could not list the contents of "http://localhost/" because it is not a folder.
at org.apache.commons.vfs.provider.AbstractFileObject.getChildren(AbstractFileObject.java:527)
at org.apache.commons.vfs.impl.DecoratedFileObject.getChildren(DecoratedFileObject.java:105)
at org.apache.commons.vfs.cache.OnCallRefreshFileObject.getChildren(OnCallRefreshFileObject.java:105)
at VFSClient.main(VFSClient.java:31)

Но сервер запущен и работает и может просматривать каталоги.

Может кто-нибудь сказать мне, что может быть причиной этой ошибки, я что-то упустил ??

Ответы [ 3 ]

1 голос
/ 13 августа 2012

Рассмотрите возможность реализации простого конкретного репо на FS2 .FS2 - это промежуточный программный интерфейс API, который обрабатывает все операции CRUD и т. Д., Которые вам нужны в файловой системе, но относительно легко может быть поддержан любым механизмом персистентности.

0 голосов
/ 09 января 2012

Вопреки тому, что написано в документации, я не думаю, что это еще реализовано. Взгляните на https://issues.apache.org/jira/browse/VFS-199

0 голосов
/ 16 ноября 2011

HTTP не поддерживает LIST_CHILDREN:

fileObject.getFileSystem().hasCapability(Capability.LIST_CHILDREN)

вернется false

какую версию VFS вы используете? возможно v2.0 поможет. В документации сказано так: http://commons.apache.org/vfs/filesystems.html

...