java重复数组列表
我一直在做一个简单的目录扫描,显示文本文件,然后将输出打印到文本区域。然而,由于某种原因,如果我再次尝试使用它,它将复制输出 以下是公共阵列:
public ArrayList<File> getfile(File dir) {
File listFile[] = dir.listFiles();
if (listFile != null && listFile.length > 0) {
for (int i = 0; i < listFile.length; i++) {
if (listFile[i].isDirectory()) {
fileList.add(listFile[i]);
getfile(listFile[i]);
} else {
if (listFile[i].getName().endsWith(".txt")) {
fileList.add(listFile[i]);
}
}
}
}
return fileList;
}
这是onclick按钮代码
File root = new File(Environment.getExternalStorageDirectory() + File.separator + user_inputfilename); //"searches what the userinput"
getfile(root);
for (int i = 0; i < fileList.size(); i++) {
newText.append(fileList.get(i).getName()+"\n");
}
我真的不知道我做错了什么?有办法清除阵列吗?任何帮助都将不胜感激。谢谢!
# 1 楼答案
你似乎也在递归地查看子目录?无论如何,试试这个。当您调用
getFiles(dir)
dofileList = getTextFilesRecursively(dir)
时:我相信您的根本问题是
fileList.add(listFile[i]);
,因为fileList
的范围超出了方法的范围,并且被重用和附加到了方法中。现在我们改用textFiles
,每次第一次调用该方法时,它都应该是空的。一个更简单的修复方法是在调用fileList = new ArrayList<>()
之前立即执行getFiles(dir);
,但是上面的代码要好得多