我正在尝试以递归方式列出我的 ftp 帐户中的所有文件夹和子文件夹。 函数 ftpPrintDirsList 返回文件夹中文件夹的数组列表。 如果我有这个文件夹: a/b/c、a/b/d/e、a/f/g/、a/f/g/h、a/f/g/i
我需要获取如下所示的数组列表:a、a/b、a/b/c、a/b/d、a/b/d/e、a/f、a/f/g、 a/f/g/h、a/f/g/i (顺序不一定是这样,但我需要查看所有文件夹)
到目前为止我被困在这里:
ArrayList<String> fassD = ftpPrintDirsList("/FlashAssets");
ArrayList<String> inner = null;
for (int i = 0; i < fassD.size(); i++) //for each subfolder in FlashAssets
{
inner = ftpPrintDirsList("/FlashAssets/"+fassD.get(i)); //list all subfolders
for (int j = 0; j < inner.size(); j++)
{
inner.set(j, fassD.get(i)+"/"+inner.get(j));
fassD.addAll(inner);
}
}
Log.d(TAG, "Final: "+fassD);
但是我遇到了无限循环,有人可以帮助我吗? 预先感谢您。
最佳答案
这是一个递归方法,假设 ftpPrintDirsList 执行其描述的操作。对于每个文件夹,它将自身添加到列表中,然后调用所有子文件夹的方法。当没有子文件夹时,它将自身添加到列表中然后返回。这将为您提供文件的深度优先排序。/a/b/c 出现在 a/c 之前
public ArrayList<String> getFolders(String foldername)
{
ArrayList<String> retval = new ArrayList<String>();
retval.add(foldername);
ArrayList<String> subfolders = ftpPrintDirsList(foldername);
for (String folder : subfolders)
retval.addall(getFolders(foldername + folder));
return retval;
}
关于java - Android列出所有ftp文件夹和子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9333776/