我正在使用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个文件(或更多),当我尝试执行此操作时,应用程序就会停止运行。即使我等了几个小时也没反应。反正有解决办法吗?我并不需要所有文件,只需要在文件名中包含特定代码的文件即可。我可以要求存储库只给我包含“ abc”的文件名以便加快速度吗?

顺便说一句,我知道这不是使用Subversion的好方法,但可悲的是我被迫这样做。

最佳答案

您可能在Collections语句上消耗了内存。

使用getDir方法的处理程序版本:

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


这样,您一次只处理一个文件。

关于java - 在SVNKit中查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9065451/

10-10 08:25