如何读取给定目录中的所有txt文件以查找字符串?JAVA

如何读取给定目录中的所有txt文件以查找字符串?JAVA,java,io,Java,Io,我希望能够扫描指定目录中的所有文本文件以查找字符串。我知道如何阅读一个文本文件。这很简单,但是如何让它扫描给定目录中一堆文本文件中的所有内容呢 这些文件将全部命名为0.txt 1.txt 2.txt等,如果这有帮助的话,也许可以使用计数器增加搜索文件的名称,然后在没有更多的txt文件时停止搜索?这是我最初的想法,但我似乎无法实现它 谢谢您可以使用此示例代码列出目录下的所有文件 public File[] listf(String directoryName) { // ............

我希望能够扫描指定目录中的所有文本文件以查找字符串。我知道如何阅读一个文本文件。这很简单,但是如何让它扫描给定目录中一堆文本文件中的所有内容呢

这些文件将全部命名为0.txt 1.txt 2.txt等,如果这有帮助的话,也许可以使用计数器增加搜索文件的名称,然后在没有更多的txt文件时停止搜索?这是我最初的想法,但我似乎无法实现它


谢谢

您可以使用此示例代码列出目录下的所有文件

public File[] listf(String directoryName) {

// .............list file
File directory = new File(directoryName);

// get all the files from a directory
File[] fList = directory.listFiles();
}

您可以使用此示例代码列出目录下的所有文件

public File[] listf(String directoryName) {

// .............list file
File directory = new File(directoryName);

// get all the files from a directory
File[] fList = directory.listFiles();
}

您可以使用以下方法:

String dirName = "E:/Path_to_file";
File dir = new File(dirName);
File[] allFiles = dir.listFiles();
for(File file : allFiles)
{
     // do something
}

您可以使用以下方法:

String dirName = "E:/Path_to_file";
File dir = new File(dirName);
File[] allFiles = dir.listFiles();
for(File file : allFiles)
{
     // do something
}

然后在检索每个文件后,使用

LineIterator li = FileUtils.lineIterator(file);
boolean searchTermFound = false;
while(li.hasNext()  &&  !searchTermFound)  {
   String sLine = li.next();

   //Find the search term...

}

检索每个文件后,使用

LineIterator li = FileUtils.lineIterator(file);
boolean searchTermFound = false;
while(li.hasNext()  &&  !searchTermFound)  {
   String sLine = li.next();

   //Find the search term...

}

此代码片段将执行您所需的操作(可能使用不同的字符集):


此代码段将执行您正在查找的操作(可能使用您选择的其他字符集):


方法调用:
scanFiles(新文件(“”.getAbsolutePath(),“bla”)

其他信息:


您可以将FilenameFilter传递到此methodcall文件夹.listFiles(新FilenameFilter(){…})
methodcall:
scanFiles(新文件(“”.getAbsolutePath(),“bla”)

其他信息:

您可以将FilenameFilter传递到此methodcall
文件夹。listFiles(新FilenameFilter(){…})
尝试以下操作:

public class FindAllFileFromDirectory {
    static List<String> fileNames = new ArrayList<String>();

    public static void main(String[] args) {
        File AppDistributionDir = new File("<your directory path>");
        if (AppDistributionDir.isDirectory()) {
            listFilesForFolder(AppDistributionDir);
        }
        for (String s : fileNames) {
            String fileExtension = FilenameUtils.getExtension(s); // import org.apache.commons.io.FilenameUtils;
            //TODO: your condition hrere
            if (s.equals("txt")) {
                System.out.println(s);
            }
        }

    }

    public static void listFilesForFolder(final File folder) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFilesForFolder(fileEntry);
            } else {
                //System.out.println(fileEntry.getAbsolutePath());
                fileNames.add(fileEntry.getName());

            }
        }
    }
}
公共类FindAllFileFromDirectory{
静态列表文件名=新的ArrayList();
公共静态void main(字符串[]args){
文件AppDistributionDir=新文件(“”);
if(AppDistributionDir.isDirectory()){
listFilesForFolder(AppDistributionDir);
}
用于(字符串s:文件名){
字符串fileExtension=FilenameUtils.getExtension;//导入org.apache.commons.io.FilenameUtils;
//托多:你的情况怎么样
如果(s.equals(“txt”)){
系统输出打印项次;
}
}
}
公共静态无效列表filesforfolder(最终文件文件夹){
对于(最终文件条目:folder.listFiles()){
if(fileEntry.isDirectory()){
listFilesForFolder(文件条目);
}否则{
//System.out.println(fileEntry.getAbsolutePath());
add(fileEntry.getName());
}
}
}
}
试试这个:

public class FindAllFileFromDirectory {
    static List<String> fileNames = new ArrayList<String>();

    public static void main(String[] args) {
        File AppDistributionDir = new File("<your directory path>");
        if (AppDistributionDir.isDirectory()) {
            listFilesForFolder(AppDistributionDir);
        }
        for (String s : fileNames) {
            String fileExtension = FilenameUtils.getExtension(s); // import org.apache.commons.io.FilenameUtils;
            //TODO: your condition hrere
            if (s.equals("txt")) {
                System.out.println(s);
            }
        }

    }

    public static void listFilesForFolder(final File folder) {
        for (final File fileEntry : folder.listFiles()) {
            if (fileEntry.isDirectory()) {
                listFilesForFolder(fileEntry);
            } else {
                //System.out.println(fileEntry.getAbsolutePath());
                fileNames.add(fileEntry.getName());

            }
        }
    }
}
公共类FindAllFileFromDirectory{
静态列表文件名=新的ArrayList();
公共静态void main(字符串[]args){
文件AppDistributionDir=新文件(“”);
if(AppDistributionDir.isDirectory()){
listFilesForFolder(AppDistributionDir);
}
用于(字符串s:文件名){
字符串fileExtension=FilenameUtils.getExtension;//导入org.apache.commons.io.FilenameUtils;
//托多:你的情况怎么样
如果(s.equals(“txt”)){
系统输出打印项次;
}
}
}
公共静态无效列表filesforfolder(最终文件文件夹){
对于(最终文件条目:folder.listFiles()){
if(fileEntry.isDirectory()){
listFilesForFolder(文件条目);
}否则{
//System.out.println(fileEntry.getAbsolutePath());
add(fileEntry.getName());
}
}
}
}

看看
文件#列表文件
;这将为您提供目录中的所有文件。请查看
文件#列表文件
;这将为您提供目录中的所有文件。您在此处添加了谁?有一些回复,对不起,我将添加到所有回答中,这些回答说通过
File.listFiles()
获取文件列表。您在这里添加了谁?有一些回复,对不起,我将添加到所有回答中,即通过
File.listFiles()
获取文件列表。使用此选项,我将如何自动打开txt文件?我使用的代码是Runtime.getRuntime().exec(“记事本”+文件名);当我知道文件名和直接地址,但现在我不知道写什么。谢谢。您要问的是如何使用
运行时#exec
命令在外部应用程序中打开文件。这真的应该是一个单独的问题(它已经被回答了很多次,例如,.True.Thank.I弄明白了。它是Runtime.getRuntime().exec(“记事本”+文件);这将打开包含字符串的txt文件。使用此选项,我将如何自动打开txt文件?我使用的代码是Runtime.getRuntime().exec(“记事本”+文件名);当我知道文件名和直接地址时,但现在我不知道该写什么。谢谢。你要问的是如何使用
运行时#exec
命令在外部应用程序中打开文件。这应该是一个单独的问题(并且它已经被回答了多次,例如,.True.Thank you。我猜出来了。它是Runtime.getRuntime().exec(“记事本”+文件);这将打开包含字符串的txt文件。您的意思是
if(fileExtension.equals(“txt”){System.out.println(s);}
不是真的!他们会根据自己的需要更改它。你是说
如果(fileExtension.equals(“txt”){System.out.println;}
不是真的!他们会根据自己的需要更改它