Android列出所有ftp文件夹和子文件夹

时间:2012-02-17 18:53:56

标签: java android recursion

我试图在递归中列出我的ftp帐户中的所有文件夹和子文件夹。 函数ftpPrintDirsList返回文件夹中的文件夹列表。 如果我有这个文件夹: a / b / c,a / b / d / e,a / f / g /,a / f / g / h,a / f / g / i

我需要得到如下所示的Array List: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);

但是我得到一个无限循环,任何人都可以帮助我。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

这是一个递归方法,假设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;
}