gpt4 book ai didi

java - 递归文件搜索不起作用

转载 作者:行者123 更新时间:2023-12-01 12:48:41 25 4
gpt4 key购买 nike

我想做的是递归搜索外部 SD 卡上的一些文件。问题是代码看起来没问题,但是(假设 .txt 文件)它只显示了 100+ 中的 7 个文件,这些文件分布在整个文件夹中。

代码是这样的:

file = new File(Environment.getExternalStorageDirectory().getAbsolutePath());
void makelist(File file){
if(file.isFile()){
if(SimpleAdapter.getFileType(file)==null)
mis.add(file);
else if(SimpleAdapter.getFileType(file).equalsIgnoreCase("text"))
doc.add(file);
}else if(file.isDirectory()){
for(File f:file.listFiles())
makelist(f);
}
}

知道如何才能使其正确运行吗?

最佳答案

假设您正在构建两个列表(misc 文件和 doc 文件),请尝试使用以下代码,将除文本文件之外的所有文件都转换为 Misc,将文本文件转换为 doc。

if(SimpleAdapter.getFileType(file) ==  null || !SimpleAdapter.getFileType(file).equalsIgnoreCase("text"))
mis.add(file);
else
doc.add(file);

不知道为什么它不适合你。尝试了一个测试程序,它运行得很好......

import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class FileChecker
{

/**
* @param args
*/
public static void main(String[] args) {
SimpleAdapterTest adapter = new SimpleAdapterTest();

adapter.makelist(new File("C:\\MYFolder"));
adapter.showList();
}

}

class SimpleAdapterTest
{
List<File> mis = new ArrayList<File>();
List<File> doc = new ArrayList<File>();


public static String getFileType(File f)
{
String Name = f.getName();
if (f.getName().endsWith(".txt") || Name.endsWith(".TXT")
|| Name.endsWith(".inf") || Name.endsWith(".INF"))
return "text";

return null;
}

public void makelist(File file){
if(file.isFile()){
if(SimpleAdapterTest.getFileType(file)==null)
mis.add(file);
else if(SimpleAdapterTest.getFileType(file).equalsIgnoreCase("text"))
doc.add(file);
}else if(file.isDirectory()){
for(File f:file.listFiles())
makelist(f);
}
}

public void showList()
{
for(File miscFile : mis)
{
System.out.println("Misc files = " + miscFile.getName());
}

for(File docfile : doc)
{
System.out.println("Doc files = " + docfile.getName());
}

}

}

关于java - 递归文件搜索不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com