繁体   English   中英

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

[英]Retrieveing path of text files in Directory using Java

我在Java程序中将目录路径作为参数传递,并且目录具有各种类型的文件。 我想检索文本文件的路径,然后再搜索每个文本文件。 我是Java的新手,有什么建议呢?

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

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;
    }
}

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

例如,下面的listFiles()方法将返回过滤器接受的目录中的文件数组。

public File[] listFiles(FileFilter filter)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM