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

使用Java检索目录中文本文件的路径,java,Java,在Java程序中,我将目录路径作为参数传递,目录中有各种类型的文件。我想检索文本文件的路径,然后进一步检索每个文本文件。 我是Java新手,有什么建议吗?从阅读。您可以从字符串创建文件,甚至可以确定它是存在()还是isDirectory()。以及列出该目录中的子目录。从阅读开始。您可以从字符串创建文件,甚至可以确定它是存在()还是isDirectory()。以及列出该目录中的子目录。创建一个表示该目录的文件对象,然后使用list()或listFiles()方法之一获取子目录。您可以将过滤器传递给

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

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

从阅读开始。您可以从字符串创建文件,甚至可以确定它是
存在()
还是
isDirectory()
。以及列出该目录中的子目录。

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

例如,将返回筛选器接受的目录中的文件数组

public File[] listFiles(FileFilter filter)

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

例如,将返回筛选器接受的目录中的文件数组

public File[] listFiles(FileFilter filter)

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

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;
    }
}
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类DirectoryWalker{
/**
*@param args
*/
私有字符串extPtr=“^.+\\.txt$”;
私有模式ptr;
公共董事{
ptr=Pattern.compile(extPtr);
}
公共静态void main(字符串[]args){
字符串entryPoint=“c:\\temp”;
DirectoryWalker dw=新的DirectoryWalker();
List textFiles=dw.extractFiles(入口点);
用于(字符串txtFile:textFiles){
System.out.println(“文件:”+txtFile);
}
}
公共列表文件(字符串startDir){
List textFiles=new ArrayList();
如果(startDir==null | | startDir.length()==0){
抛出新的RuntimeException(“目录项不能为null或空”);
}
文件f=新文件(startDir);
如果(!f.isDirectory()){
抛出新的运行时异常(“路径“+startDir+”无效”);
}
File[]files=f.listFiles();
用于(文件tmpFile:files){
if(tmpFile.isDirectory()){
textFiles.addAll(extractFiles(tmpFile.getAbsolutePath());
}否则{
字符串路径=tmpFile.getAbsolutePath();
Matcher Matcher=ptr.Matcher(路径);
if(matcher.find()){
textFiles.add(路径);
}
}
}
返回文本文件;
}
}

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

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;
    }
}
导入java.io.File;
导入java.util.ArrayList;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类DirectoryWalker{
/**
*@param args
*/
私有字符串extPtr=“^.+\\.txt$”;
私有模式ptr;
公共董事{
ptr=Pattern.compile(extPtr);
}
公共静态void main(字符串[]args){
字符串entryPoint=“c:\\temp”;
DirectoryWalker dw=新的DirectoryWalker();
List textFiles=dw.extractFiles(入口点);
用于(字符串txtFile:textFiles){
System.out.println(“文件:”+txtFile);
}
}
公共列表文件(字符串startDir){
List textFiles=new ArrayList();
如果(startDir==null | | startDir.length()==0){
抛出新的RuntimeException(“目录项不能为null或空”);
}
文件f=新文件(startDir);
如果(!f.isDirectory()){
抛出新的运行时异常(“路径“+startDir+”无效”);
}
File[]files=f.listFiles();
用于(文件tmpFile:files){
if(tmpFile.isDirectory()){
textFiles.addAll(extractFiles(tmpFile.getAbsolutePath());
}否则{
字符串路径=tmpFile.getAbsolutePath();
Matcher Matcher=ptr.Matcher(路径);
if(matcher.find()){
textFiles.add(路径);
}
}
}
返回文本文件;
}
}

如果需要更多帮助,请尝试下面的建议并发布源代码。如果需要更多帮助,请尝试下面的建议并发布源代码。