如何使用Java从一个文件夹中获取所有文本文件?

如何使用Java从一个文件夹中获取所有文本文件?,java,file,Java,File,我需要读取文件夹中的所有“.txt”文件(用户需要选择此文件夹) 请告知如何操作?您需要阅读并在其中迭代 与其说是关于MVC的问题,不如说是关于Java对文件系统的访问的问题假定您已经有了目录,您可以这样做: File directory= new File("user submits directory"); for (File file : directory.listFiles()) { if (FileNameUtils.getExtension(file.getName()).e

我需要读取文件夹中的所有“.txt”文件(用户需要选择此文件夹)

请告知如何操作?

您需要阅读并在其中迭代


与其说是关于MVC的问题,不如说是关于Java对文件系统的访问的问题假定您已经有了目录,您可以这样做:

File directory= new File("user submits directory");
for (File file : directory.listFiles())
{
   if (FileNameUtils.getExtension(file.getName()).equals("txt"))
   {
       //dom something here.
   }
}
可以找到FileNameUtils.getExtension()


编辑:您似乎想做的是从web浏览器访问文件结构。根据上一篇SO帖子,由于安全原因,您不可能执行此操作。

我编写了以下函数,用于搜索目录中的所有文本文件

public static void parseDir(File dirPath)
    {

        File files[] = null;
        if(dirPath.isDirectory())
        {
            files = dirPath.listFiles();
            for(File dirFiles:files)
            {

                if(dirFiles.isDirectory())
                {
                    parseDir(dirFiles);
                }
                else
                {
                    if(dirFiles.getName().endsWith(".txt"))
                    {
                        //do your processing here....
                    }
                }
            }

        }
        else
        {
            if(dirPath.getName().endsWith(".txt"))
            {
                //do your processing here....
            }
        }

    }
File userDir=new File("userEnteredDir");
File[] allfiles=useDir.listFiles();

查看是否有帮助。

为用户提供一个文本框,以输入目录的路径

public static void parseDir(File dirPath)
    {

        File files[] = null;
        if(dirPath.isDirectory())
        {
            files = dirPath.listFiles();
            for(File dirFiles:files)
            {

                if(dirFiles.isDirectory())
                {
                    parseDir(dirFiles);
                }
                else
                {
                    if(dirFiles.getName().endsWith(".txt"))
                    {
                        //do your processing here....
                    }
                }
            }

        }
        else
        {
            if(dirPath.getName().endsWith(".txt"))
            {
                //do your processing here....
            }
        }

    }
File userDir=new File("userEnteredDir");
File[] allfiles=useDir.listFiles();

使用getExtension()方法迭代所有文件以过滤.txt文件

您可以使用
filenamefilter
类这是一个非常简单的用法

public static void main(String[] args) throws IOException {

        File f = new File("c:\\mydirectory");

        FilenameFilter textFilter = new FilenameFilter() {
            public boolean accept(File dir, String name) {
                return name.toLowerCase().endsWith(".txt");
            }
        };

        File[] files = f.listFiles(textFilter);
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.print("directory:");
            } else {
                System.out.print("     file:");
            }
            System.out.println(file.getCanonicalPath());
        }

    }

只需创建一个
filenamefilter
实例一个override accept方法你想要什么

这个任务与Spring MVC有什么关系?你尝试了什么?你可以用类似的方法在控制器程序中用java做这个文件夹将在客户端?@e-zing:是的,你是对的。我纠正了错误topic@Balaswamy瓦德曼:我这么做是为了一个文件。如何使用standart Windows open dialog选择目录?当用户选择一个文件时,将路径传递给文件构造器。这仅在所选文件夹位于服务器端时才起作用(这里的情况似乎不是这样)。您不能从服务器端访问客户端的文件夹。@ManishSharma:关于您的第一点,OP没有指定任何方案。。。看到spring控制器位于服务器上,假设OP想要访问服务器端的东西。关于你的第二点,OP没有具体说明他做了什么。我只是提供了一小段代码,它满足了OP的要求,这个网站的目的不是让其他人工作。@ManishSharma:不在服务器上复制文件,在客户端可以这样做吗?+1是第一个提到的。