使用Java检索目录中的文本文件的路径

时间:2010-09-23 02:21:57

标签: java

我将目录路径作为Java程序中的参数传递,并且该目录具有各种类型的文件。我想检索文本文件的路径,然后进一步检索每个文本文件。 我是Java新手,有什么建议如何去做?

3 个答案:

答案 0 :(得分:2)

即使这不是最佳解决方案,您也可以将此作为起点。

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class DirectoryWalker {

    /**
     * @param args
     */
    private String extPtr = "^.+\\.txt$";
    private Pattern ptr;
    public DirectoryWalker(){
        ptr = Pattern.compile(extPtr);
    }
    public static void main(String[] args) {
        String entryPoint = "c:\\temp";
        DirectoryWalker dw = new DirectoryWalker();
        List<String> textFiles  = dw.extractFiles(entryPoint);
        for(String txtFile : textFiles){
            System.out.println("File: "+txtFile);
        }
    }

    public List<String> extractFiles(String startDir) {

        List<String> textFiles = new ArrayList<String>();

        if (startDir == null || startDir.length() == 0) {
          throw new RuntimeException("Directory entry can't be null or empty");
        }

        File f = new File(startDir);
        if (!f.isDirectory()) {
          throw new RuntimeException("Path " + startDir + " is invalid");

        }

        File[] files = f.listFiles();
        for (File tmpFile : files) {
            if (tmpFile.isDirectory()) {
                textFiles.addAll(extractFiles(tmpFile.getAbsolutePath()));
            } else {
                String path = tmpFile.getAbsolutePath();
                Matcher matcher = ptr.matcher(path);
                if(matcher.find()){
                    textFiles.add(path);
                }
            }
        }

        return textFiles;
    }
}

答案 1 :(得分:1)

创建表示目录的File对象,然后使用list()或listFiles()方法之一来获取子项。您可以将过滤器传递给这些过滤器以控制返回的内容。

例如,listFiles() method below将返回过滤器接受的目录中的文件数组。

public File[] listFiles(FileFilter filter)

答案 2 :(得分:0)

首先阅读File API。您可以从字符串创建文件,甚至可以确定它是exists()还是isDirectory()。以及列出该目录中的孩子。