Files — 파일, 디렉터리, 기타 유형의 파일에 대해 동작하는 정적 메서드 모음

Files — 파일, 디렉터리, 기타 유형의 파일에 대해 동작하는 정적 메서드 모음

Files 클래스는 파일, 디렉터리, 기타 유형의 파일에 대해 동작하는 정적 메서드만으로 구성돼요. 대부분의 경우 여기에 정의된 메서드는 파일 연산을 수행하기 위해 연관된 파일 시스템 프로바이더에 위임해요.

출처: Java API Reference

본문

public final class Files extends Object

파일, 디렉터리, 기타 유형의 파일에 대해 동작하는 정적 메서드만으로 구성돼요. 대부분의 경우 이 메서드들은 파일 연산을 수행하기 위해 연관된 파일 시스템 프로바이더에 위임해요. Java 1.7부터 사용할 수 있어요.

주요 파일·디렉터리 연산

  • static Path createFile(Path path, FileAttribute<?>... attrs) — 새 빈 파일을 만들어요. 파일이 이미 존재하면 실패해요.
  • static Path createDirectory(Path dir, FileAttribute<?>... attrs) — 새 디렉터리를 만들어요.
  • static Path createDirectories(Path dir, FileAttribute<?>... attrs) — 존재하지 않는 상위 디렉터리를 모두 먼저 만들어 디렉터리를 만들어요.
  • static Path createTempFile(...) / createTempDirectory(...) — 기본 임시 파일 디렉터리 또는 지정된 디렉터리에 프리픽스/서픽스로 이름을 생성해 빈 파일이나 디렉터리를 만들어요.
  • static void delete(Path path) — 파일을 삭제해요.
  • static boolean deleteIfExists(Path path) — 파일이 존재하면 삭제해요.
  • static Path move(Path source, Path target, CopyOption... options) — 파일을 대상 파일로 이동하거나 이름을 바꿔요.
  • static Path copy(Path source, Path target, CopyOption... options) — 파일을 대상 파일로 복사해요.
  • static long copy(InputStream in, Path target, CopyOption... options) — 입력 스트림의 모든 바이트를 파일로 복사해요.
  • static Path createLink(...) / createSymbolicLink(...) — 기존 파일에 대한 링크(디렉터리 항목) 또는 심볼릭 링크를 만들어요 (선택 연산).
  • static Path readSymbolicLink(Path link) — 심볼릭 링크의 대상을 읽어요 (선택 연산).

존재·속성 검사

  • static boolean exists(Path path, LinkOption... options) — 파일이 존재하는지 검사해요.
  • static boolean notExists(Path path, LinkOption... options) — 이 경로가 가리키는 파일이 존재하지 않는지 검사해요.
  • static boolean isDirectory(Path path, ...) / isRegularFile(...) / isSymbolicLink(...) — 각각 디렉터리, 일반 파일, 심볼릭 링크인지 검사해요.
  • static boolean isReadable(Path path) / isWritable(Path path) / isExecutable(Path path) / isHidden(Path path) — 각각 읽기·쓰기·실행 가능 여부, 숨김 여부를 검사해요.
  • static boolean isSameFile(Path path, Path path2) — 두 경로가 같은 파일을 가리키는지 검사해요.
  • static long size(Path path) — 파일 크기를 바이트 단위로 반환해요.
  • static boolean isHidden(Path path) — 파일이 숨김으로 간주되는지 여부를 알려줘요.

속성 읽기·쓰기

  • static <A extends BasicFileAttributes> A readAttributes(Path path, Class<A> type, LinkOption... options) — 파일 속성을 일괄 연산으로 읽어요.
  • static Map<String,Object> readAttributes(Path path, String attributes, LinkOption... options) — 파일 속성 집합을 일괄 연산으로 읽어요.
  • static Object getAttribute(Path path, String attribute, LinkOption... options) — 파일 속성의 값을 읽어요.
  • static Path setAttribute(Path path, String attribute, Object value, LinkOption... options) — 파일 속성의 값을 설정해요.
  • static FileTime getLastModifiedTime(...) / setLastModifiedTime(Path, FileTime) — 마지막 수정 시간을 읽고 갱신해요.
  • static UserPrincipal getOwner(Path, ...) / setOwner(Path, UserPrincipal) — 파일 소유자를 읽고 갱신해요.
  • static Set<PosixFilePermission> getPosixFilePermissions(...) / setPosixFilePermissions(...) — POSIX 권한을 읽고 설정해요.
  • static FileStore getFileStore(Path path) — 파일이 위치한 파일 저장소를 나타내는 FileStore를 반환해요.
  • static <V extends FileAttributeView> V getFileAttributeView(Path path, Class<V> type, LinkOption... options) — 주어진 유형의 파일 속성 뷰를 반환해요.

열기·읽기·쓰기

  • static InputStream newInputStream(Path path, OpenOption... options) — 파일을 열어 읽을 입력 스트림을 반환해요.
  • static OutputStream newOutputStream(Path path, OpenOption... options) — 파일을 열거나 만들어 쓰기 위한 출력 스트림을 반환해요.
  • static SeekableByteChannel newByteChannel(Path path, ...) — 파일을 열거나 만들어 접근할 seekable 바이트 채널을 반환해요.
  • static BufferedReader newBufferedReader(...) / BufferedWriter newBufferedWriter(...) — 텍스트를 효율적으로 읽거나 쓰는 버퍼링 리더/라이터를 반환해요.
  • static DirectoryStream<Path> newDirectoryStream(...) — 디렉터리 항목을 반복하는 DirectoryStream을 반환해요.
  • static byte[] readAllBytes(Path path) — 파일의 모든 바이트를 읽어요.
  • static List<String> readAllLines(...) — 파일의 모든 줄을 읽어요.
  • static String readString(...) / writeString(...) — 파일의 모든 내용을 문자열로 읽거나 문자 시퀀스를 파일에 써요.
  • static Stream<String> lines(Path path, ...) — 파일의 모든 줄을 Stream으로 읽어요.
  • static Path write(Path path, byte[] bytes, OpenOption... options) — 바이트를 파일에 써요.

트리 순회·탐색

  • static Stream<Path> list(Path dir) — 디렉터리의 항목인 요소를 가진 lazy하게 채워지는 Stream을 반환해요.
  • static Stream<Path> walk(...) / walkFileTree(...) — 주어진 시작 파일을 루트로 하는 파일 트리를 걸으며 Path를 lazy하게 채워지는 Stream으로 반환하거나 트리를 걸어요.
  • static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path,BasicFileAttributes> matcher, ...) — 주어진 시작 파일을 루트로 하는 파일 트리에서 파일을 검색해 Path를 lazy하게 채워지는 Stream으로 반환해요.

기타

  • static long mismatch(Path path, Path path2) — 두 파일 내용의 첫 번째 불일치 바이트 위치를 찾아 반환하거나, 불일치가 없으면 -1L을 반환해요.
  • static String probeContentType(Path path) — 파일의 콘텐츠 유형을 조사해요.

OpenOption

newByteChannelnewOutputStream은 파일 여는 방식을 결정하는 OpenOption을 받아요: APPEND, TRUNCATE_EXISTING, CREATE_NEW, CREATE, DELETE_ON_CLOSE, SPARSE, SYNC, DSYNC 등이 있어요. 예:

Path path = ...;

// 기존 파일을 자르고 덮어쓰거나, 없으면 생성
OutputStream out = Files.newOutputStream(path);

// 기존 파일에 추가, 파일이 없으면 실패
out = Files.newOutputStream(path, APPEND);

// 항상 새 파일 생성, 이미 존재하면 실패
out = Files.newOutputStream(path, CREATE_NEW);

더 알아보기 (Learn more)

Java 공식 API