Java - Read all .txt files in folder

后端 未结 7 1848
醉话见心
醉话见心 2020-12-08 15:49

Let\'s say, I have a folder called maps and inside maps I have map1.txt, map2.txt, and map3.txt. How can I u

相关标签:
7条回答
  • 2020-12-08 16:06

    Something like the following should get you going, note that I use apache commons FileUtils instead of messing with buffers and streams for simplicity...

    File folder = new File("/path/to/files");
    File[] listOfFiles = folder.listFiles();
    
    for (int i = 0; i < listOfFiles.length; i++) {
      File file = listOfFiles[i];
      if (file.isFile() && file.getName().endsWith(".txt")) {
        String content = FileUtils.readFileToString(file);
        /* do somthing with content */
      } 
    }
    
    0 讨论(0)
  • 2020-12-08 16:06

    I think it's good way to read all .txt files from maps and sub folder's

     private static void addfiles (File input,ArrayList<File> files)
    {
        if(input.isDirectory())
        {
            ArrayList <File> path = new ArrayList<File>(Arrays.asList(input.listFiles()));
            for(int i=0 ; i<path.size();++i)
            {
                if(path.get(i).isDirectory())
                {
                    addfiles(path.get(i),files);
                }
                if(path.get(i).isFile())
                {
                    String name=(path.get(i)).getName();
                    if(name.lastIndexOf('.')>0)
                    {
                        int lastIndex = name.lastIndexOf('.');
                        String str = name.substring(lastIndex);
                        if(str.equals(".txt"))
                        {
                            files.add(path.get(i));
                        }
                    }
                }
            }
        }
        if(input.isFile())
        {
            String name=(input.getName());
            if(name.lastIndexOf('.')>0)
            {
                int lastIndex = name.lastIndexOf('.');
                String str = name.substring(lastIndex);
                if(str.equals(".txt"))
                {
                    files.add(input);
                }
            }
        }
    
    }
    
    0 讨论(0)
  • 2020-12-08 16:07
        final File folder = new File("C:/Dev Tools/apache-tomcat-6.0.37/webapps/ROOT/somefile");
        for (final File fileEntry : folder.listFiles()) {
               System.out.println("FileEntry Directory "+fileEntry);
    
    0 讨论(0)
  • 2020-12-08 16:10

    Using only JDK, If all your files are in one directory:

    File dir = new File("path/to/files/");
    
    for (File file : dir.listFiles()) {
        Scanner s = new Scanner(file);
        // do something with file
        s.close();
    }
    

    To exclude files, you can use listFiles(FileFilter)

    0 讨论(0)
  • 2020-12-08 16:18

    With NIO you can do the following:

    Files.walk(Paths.get("/path/to/files"))
              .filter(Files::isRegularFile)
              .filter(path -> path.getFileName().toString().endsWith(".txt"))
              .map(FileUtils::readFileToString)
              // do something
    

    To read the file contents you may use Files#readString but, as usual, you need to handle IOException inside lambda expression.

    0 讨论(0)
  • 2020-12-08 16:24

    I would take @Andrew White answer (+1 BTW) one step further, and suggest you would use FileNameFilter to list only relevant files:

    FilenameFilter filter = new FilenameFilter() {
        public boolean accept(File dir, String name) {
            return name.endsWith(".txt");
        }
    };
    
    File folder = new File("/path/to/files");
    File[] listOfFiles = folder.listFiles(filter);
    
    for (int i = 0; i < listOfFiles.length; i++) {
        File file = listOfFiles[i];
        String content = FileUtils.readFileToString(file);
        // do something with the file
    }
    
    0 讨论(0)
提交回复
热议问题