【发布时间】:2014-10-30 21:04:28
【问题描述】:
当我运行这个方法时,我立即得到一个堆栈溢出异常,所以很明显该方法不断递归地调用自己,但我不知道为什么。作为参考,我正在测试它的文件结构是一堆文件夹,在这些文件夹中是文件,没有其他文件夹
public void files(File[] f)
{
if(f == null){
return;
}
else
{
for(int i = 0; i < f.length; i++)
{
if(f[i].isFile() && (f[i].getName().contains(".mp3") || f[i].getName().contains(".m4a"))) //iterate through files and check if each file matches the required criteria
{
String fullname = f[i].getName();
Log.v("full name", fullname);
String name = null;
if(fullname.contains(".mp3"))
{
name = fullname.substring(0, fullname.lastIndexOf(".mp3"));
}
else if(fullname.contains(".m4a")) //Removing file extensions of music file so they can be displayed using an appropriate name
{
name = fullname.substring(0, fullname.lastIndexOf(".m4a"));
}
list.add(name);
mp3.add(f[i]);
Log.v("added", name);
}
if(f[i].isDirectory())
{
File inner[] = files[i].listFiles();
files(inner);
}
}
}
}
【问题讨论】:
-
我要做的第一件事是添加更多日志记录。接下来我要做的是将递归调用更改为接受 one 文件 - 只是因为这更容易处理。
-
尝试了使用 4 个文件夹和相当多的文件,效果很好
标签: java android recursion directory stack-overflow