skyshuai1 2015-06-19 08:01 采纳率: 16.7%
浏览 1853

递归一个文件夹下所有文件以及文件夹,造成栈内存溢出,求解决

我需要递归一个文件夹下所有的文件并进行操纵,文件夹下也有文件夹,我用一个list存储递归得到的所有文件可能会造成溢出。我需要当此list为10000时候执行,然后清空list,请问如何实现。代码如下:
static void getFiles(String filePath){
File root = new File(filePath);
File[] files = root.listFiles();
for(File file:files){
if(file.isDirectory()){//是否为文件夹
getFiles(file.getAbsolutePath());
filelist.add(file.getAbsolutePath());//filelist是ArrayList,用来存储所有文件路径;
}else{
//对文件的操作;

请问我改如何修改才能让程序在flielist大小每当10000执行一次,然后在将其清空,继续执行,不至于让filelist太大从而解决内存溢出问题。本人线程比较菜,求大神帮忙。最好能在此代码上修改。

  • 写回答

3条回答

  • bdmh 移动开发领域优质创作者 2015-06-19 08:17
    关注

    你确认是list的容量问题吗,也许是你这个递归无法结束,导致溢出,如果想清空list,那就在每次进入这个递归时判断数量,然后清空,不过这样做危险很多,中途改变数量,可能导致入栈的操作或后续的操作出问题

    评论

报告相同问题?

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!