【发布时间】:2015-08-05 19:44:45
【问题描述】:
这个检查 mp3 歌曲的代码(使用递归)使我的资源管理器非常慢 请给我建议一种让它更快的方法
public static boolean getMp3s1(File dir){
int h=0;
File[] listFile = dir.listFiles();
if(listFile!=null)
for( int i=0; i< listFile.length; i++)
{
if(listFile[i].isDirectory()==true)
getMp3s1(listFile[i]);
else
{
if(listFile[i].getName().endsWith(".mp3")==true||listFile[i].getName().endsWith(".MP3")==true)
h=1;
}
}
if(h==1){
h=0;
return true;
}
else
return false;
}
【问题讨论】:
-
stackoverflow.com/questions/9530921/…。希望这会对你有所帮助。
-
每当调用一个方法时,它会将调用之前的所有代码放入堆栈中,将函数内部的代码执行,完成后将原始代码从堆栈中取出并执行。这在递归中一遍又一遍地发生,并且创建多个堆栈,调用次数越多程序变得越慢因此您可以在无限 for 循环中执行相同操作,该循环仅在中断时退出并且仍然更有效
-
@PraveenKumar Bro 我要求解决递归问题。你提到的代码是获取所有文件和文件夹......我的代码是检查文件夹及其子文件夹是否包含 mp3文件与否。这就是为什么我需要使用递归,这让我的应用程序变慢了............仍然非常感谢您的回复
-
@WisdmLabs 你能举出任何用 for 循环来实现这个的例子吗?因为我不能用 for 循环来做到这一点......
-
你可以尝试这样的事情,但它在 java 中,所以你必须做一些改变stackoverflow.com/questions/3154488/…