Java에서 폴더의 모든 파일을 읽는 방법

Mohammad Irfan 2023년10월12일
  1. Java에서 폴더의 모든 파일을 읽는 방법
  2. Java에서Files 클래스를 사용하여 폴더의 모든 파일 읽기
  3. Java에서newDirectoryStream()메서드를 사용하여 폴더의 모든 파일 읽기
  4. Java에서walkFileTree()메소드를 사용하여 폴더의 모든 파일 읽기
Java에서 폴더의 모든 파일을 읽는 방법

이 튜토리얼에서는 Java에서 폴더의 모든 파일을 읽는 방법을 소개하고이를 이해하기위한 몇 가지 예제 코드를 나열합니다.

폴더의 모든 파일을 가져 오는 방법에는 여러 가지가 있습니다. 여기서 우리는File,Files,DirectoryStream 클래스 등을 사용할 수 있습니다. 예를 봅시다.

Java에서 폴더의 모든 파일을 읽는 방법

여기서는File 클래스를 사용하여 소스 디렉토리에있는 모든 파일과 폴더를 수집 한 다음 isDirectory()메서드를 사용하여 파일인지 폴더인지 확인합니다. 아래 예를 참조하십시오.

import java.io.File;
import java.text.ParseException;
public class SimpleTesting {
  public static void findAllFilesInFolder(File folder) {
    for (File file : folder.listFiles()) {
      if (!file.isDirectory()) {
        System.out.println(file.getName());
      } else {
        findAllFilesInFolder(file);
      }
    }
  }
  public static void main(String[] args) throws ParseException {
    File folder = new File("/home/folder/src");
    findAllFilesInFolder(folder);
  }
}

Java에서Files 클래스를 사용하여 폴더의 모든 파일 읽기

스트림을 사용하려면Path스트림을 반환하는Files 클래스의walk()메서드를 사용하세요. 그런 다음filter()메서드를 사용하여 파일 만 수집하고forEach()를 사용하여 인쇄합니다.

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    try (Stream<Path> paths = Files.walk(Paths.get("/home/folder/src"))) {
      paths.filter(Files::isRegularFile).forEach(System.out::println);
    }
  }
}

Java에서newDirectoryStream()메서드를 사용하여 폴더의 모든 파일 읽기

여기서는Files 클래스와Path 스트림을 반환하는newDirectoryStream()메서드를 사용합니다. 그런 다음for-each 루프를 사용하여 파일 목록을 반복하고 파일 이름을 인쇄합니다.

import java.io.IOException;
import java.nio.file.DirectoryIteratorException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get("/home/folder/src/"))) {
      for (Path file : stream) {
        System.out.println(file.getFileName());
      }
    } catch (IOException | DirectoryIteratorException ex) {
      System.err.println(ex);
    }
  }
}

Java에서walkFileTree()메소드를 사용하여 폴더의 모든 파일 읽기

여기서는 소스 폴더와 SimpleFileVisitor참조라는 두 개의 인수를받는Files 클래스의walkFileTree()메서드를 사용합니다. 아래 예를 참조하십시오.

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class SimpleTesting {
  public static void main(String[] args) throws IOException {
    SimpleFileVisitor<Path> file = new SimpleFileVisitor<Path>() {
      @Override
      public FileVisitResult visitFile(Path filePath, BasicFileAttributes attrs)
          throws IOException {
        System.out.println(filePath);
        return FileVisitResult.CONTINUE;
      }
    };
    Files.walkFileTree(Paths.get("/home/folder/src"), file);
  }
}

관련 문장 - Java File

관련 문장 - Java IO