2

Commons VFS を使用して HTTP サーバーからファイルを参照および取得して、ディレクトリ参照機能を実装しようとしています。以下のコード スニペットを参照してください。

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)

ただし、サーバーは稼働しており、ディレクトリを参照できます。

このエラーの理由を誰か教えてもらえますか?

4

3 に答える 3

1

FS2に単純な具象リポジトリを実装することを検討してください。FS2 は、ファイルシステムで必要なすべての CRUD などの操作を処理するミドルウェア API ですが、永続化メカニズムによって比較的簡単にサポートできます。

于 2012-08-13T00:52:54.893 に答える
0

HTTP は LIST_CHILDREN をサポートしていないようです:

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

戻るだろうfalse

どのバージョンの VFS を使用していますか? おそらくv2.0が役立つでしょう。ドキュメントにはそう書かれています: http://commons.apache.org/vfs/filesystems.html

于 2011-11-16T14:49:35.973 に答える
0

ドキュメントの内容に反して、これはまだ実装されていないと思います。https://issues.apache.org/jira/browse/VFS-199をご覧ください

于 2012-01-09T03:32:22.520 に答える