2

SVNKit を使用して、バイナリ ファイルを含むリポジトリにアクセスしています。リポジトリ内の特定のディレクトリに移動し、そこからファイルのリストを取得する必要があります。次に、これを行います:(ずさんなコード)

 Collection<SVNDirEntry> entries=(Collection<SVNDirEntry> repository.getDir(omitted);
 Iterator<SVNDirEntry> it=entries.iterator();
 while(it.hasNext()){
      SVNDirEntry entry=(SVNDirEntry) it.next();
      if(entry.getName().contains("abc")){
           list.add(entry.getName());
      }
 }

ほとんどのディレクトリにはいくつかのファイルが含まれており、SVNRepository から getDir(....) を使用しても問題ありませんが、約 10000 個 (またはそれ以上) のファイルを含むフォルダーが 1 つあり、それを実行しようとするとアプリケーションが停止します。何時間待っても何も起こりません。とにかくこれを解決する方法はありますか?ファイル名に特定のコードを含むファイルだけが必要です。これを高速化するために、「abc」を含むファイル名のみを提供するようにリポジトリに依頼できますか?

ところで、これが Subversion を使用する良い方法ではないことはわかっていますが、残念ながらこの方法を余儀なくされています。

4

1 に答える 1

1

Collections ステートメントでメモリを大量に消費している可能性があります。

getDirメソッドのハンドラ バージョンを使用します。

getDir(String path, long revision, Map properties, ISVNDirEntryHandler handler)

そうすれば、一度に 1 つのファイルのみを処理できます。

于 2012-01-30T16:45:39.437 に答える