【问题标题】:Recursively file search not working递归文件搜索不起作用
【发布时间】:2014-06-26 12:40:03
【问题描述】:

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

知道如何让它正确运行吗?

【问题讨论】:

  • 您的getFileType() 方法中可能缺少一些东西?
  • getFileType() 是 public static String getFileType(File f){ String Name = f.getName(); if(f.getName().endsWith(".txt") || Name.endsWith(".TXT") || Name.endsWith(".inf") || Name.endsWith(".INF")) 返回“文本”;返回空值; }

标签: java android eclipse file search


【解决方案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());
    }

}

}

【讨论】:

    猜你喜欢
    • 2020-09-29
    • 2015-04-06
    • 1970-01-01
    • 2010-12-24
    • 2012-06-15
    • 2023-03-16
    • 2021-04-20
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多