如何使用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()).equa

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