2011-08-09 21 views
2

の上に私はは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(); 
} 

、私のコードスニペットの下に見つけ、ディレクトリブラウジング機能を実装するためにコモンズVFSを使用してHTTPサーバからファイルを閲覧および取得しようとしています。しかし、私はこれを実行するとコード私は次の例外を受け取ります:

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) 

しかし、サーバーが起動しており、ディレクトリを参照することができます。

誰でもこのエラーの理由が何であるか教えてもらえますか?何か不足していますか?

答えて

0

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

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

あなたはVFSのどのバージョンを使用しているfalse

を返すでしょうか?おそらくv2.0が役立つでしょう。ドキュメントにはこう書かれています: http://commons.apache.org/vfs/filesystems.html

1

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

関連する問題