递归文件搜索不起作用

时间:2014-06-26 12:40:04

标签: java android eclipse file search

我想做的是递归搜索外部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);
        }
    }

我知道如何让它正常运行?

1 个答案:

答案 0 :(得分:1)

假设您正在构建两个列表(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());
    }

}

}