본문 바로가기

JAVA

자바Java 파일 입출력 관련 라이브러리/클래스 정리표 + 간단 설명

항상 코딩을 하다보면 뭐가 있는지 알지 못해 고전하는 경우가 많은 것 같습니다. 일단 뭐가 있는 지 알고 상황에 맞는 것들을 취사선택해서 습득 하시면 도움이 되지 않을까 생각해봅니다.

 

라이브러리/ 클래스 설명 입출력단위 주요 메서드 / 기능 주로 사용하는 경우
FileInputStream /
FileOutputStream
파일을 바이트 단위로 읽고 씁니다. 바이트 read(), write() 이미지, 동영상 등 바이너리 파일을 처리할 때
FileReader /
FileWriter
파일을 문자 단위로 읽고 씁니다. 문자 read(), write() 텍스트 파일을 간단히 읽고 쓸 때
BufferedReader /
BufferedWriter
버퍼를 사용하여 성능을 최적화한 문자 입출력 스트림입니다. 문자 readLine(), write(), flush() 라인 단위로 텍스트 파일을 읽고 쓸 때, 대용량 파일 처리 시
DataInputStream /
DataOutputStream
기본 데이터 타입(정수, 부동소수점 등)을 읽고 쓰기 위한 스트림입니다. 바이트 readInt(), readDouble(), writeInt(), writeDouble() 정수, 실수 등 기본 데이터 타입을 파일에 저장할 때
ObjectInputStream /ObjectOutputStream 객체 직렬화를 통해 객체를 파일로 저장하고 읽을 수 있습니다. 객체(바이트) readObject(), writeObject() 객체 상태를 파일로 저장하고, 나중에 복원할 때
java.nio.file.Files 다양한 파일 작업을 지원하는 유틸리티 클래스입니다. 바이트 / 문자 readAllLines(), write(), lines(), copy(), move(), exists() 간단하게 파일 읽기/쓰기, 파일 존재 여부, 대용량 파일 처리 시
File 파일 경로 및 파일 정보를 다룰 수 있는 클래스입니다. - exists(), getName(), getPath(), length(), delete(), mkdir() 파일 및 디렉터리 관리 (삭제, 생성, 이름, 크기 등)
RandomAccessFile 파일의 특정 위치에서 읽기/쓰기가 가능한 클래스입니다. 바이트 seek(), read(), write(), readLine() 파일의 임의 위치에 접근할 필요가 있을 때
Scanner 파일을 간편하게 라인 단위로 읽거나 구분자로 분리할 수 있는 클래스입니다. 문자 nextLine(), next(), useDelimiter() 텍스트 파일을 라인 단위로 읽고, 특정 구분자로 분리할 때
Properties 파일에서 키-값 쌍을 읽고 쓸 수 있는 클래스입니다. 문자 load(), store(), getProperty(), setProperty() 설정 파일(.properties)을 읽고 쓸 때
Path 및 Paths 파일 경로를 조작할 수 있는 클래스입니다. - toAbsolutePath(), getFileName(), getParent(), resolve(), relativize() 파일 경로의 조작, 경로 계산 등을 할 때
FileChannel NIO의 채널을 사용해 대용량 파일을 효율적으로 읽고 쓰는 클래스입니다. 바이트 read(), write(), position(), truncate(), transferTo(), transferFrom() 파일 복사, 대용량 파일의 효율적 입출력
ClassLoader 자바 리소스를 클래스패스에서 불러오는 데 사용합니다. 바이트 getResourceAsStream(), getResource(), findClass(), defineClass() resources 폴더의 리소스 파일을 로드할 때

 

  • FileInputStream / FileOutputStream
    • 설명: 파일을 바이트 단위로 읽고 쓸 때 사용하는 스트림 클래스입니다.
    • 용도: 이미지, 비디오 등 바이너리 파일을 다룰 때 유용합니다.
  • FileReader / FileWriter
    • 설명: 파일을 문자 단위로 읽고 쓰는 클래스입니다.
    • 용도: 텍스트 파일을 간단하게 처리할 때 적합합니다.
  • BufferedReader / BufferedWriter
    • 설명: 파일을 읽거나 쓸 때 버퍼를 사용하여 성능을 향상시킵니다.
    • 용도: 대용량 파일을 라인 단위로 효율적으로 처리할 때 사용합니다.
  • DataInputStream / DataOutputStream
    • 설명: 기본 데이터 타입(정수, 실수 등)을 파일에 저장하고 읽을 수 있게 해줍니다.
    • 용도: 데이터 타입이 분명한 값을 입출력할 때 사용합니다.
  • ObjectInputStream / ObjectOutputStream
    • 설명: 객체를 직렬화하여 파일에 저장하고, 저장된 객체를 복원할 수 있습니다.
    • 용도: 객체 상태를 그대로 저장하거나 복원할 때 사용합니다.
  • java.nio.file.Files
    • 설명: 파일과 디렉터리에 대한 다양한 작업을 간편하게 수행할 수 있는 유틸리티 클래스입니다.
    • 용도: 파일 존재 확인, 파일 복사 및 이동, 간단한 파일 읽기/쓰기에 사용됩니다.
  • File
    • 설명: 파일 또는 디렉터리의 경로 정보를 제공하며, 파일의 존재 여부와 같은 속성을 확인할 수 있습니다.
    • 용도: 파일의 기본 정보(이름, 경로, 크기)를 확인하거나 삭제, 생성할 때 사용합니다.
  • RandomAccessFile
    • 설명: 파일의 특정 위치에서 읽기/쓰기를 지원하는 클래스입니다.
    • 용도: 파일의 특정 위치에 빠르게 접근해야 할 때 유용합니다.
  • Scanner
    • 설명: 파일을 라인 단위로 읽거나, 구분자로 분리하여 쉽게 데이터를 추출할 수 있게 해줍니다.
    • 용도: 텍스트 파일을 라인 단위로 읽어와 데이터를 분석할 때 사용합니다.
  • Properties
    • 설명: 키-값 쌍을 통해 설정 파일을 다루는 클래스입니다.
    • 용도: 애플리케이션 설정 파일(.properties)을 읽고 쓸 때 사용됩니다.
  • Path 및 Paths
    • 설명: 파일 경로를 다루는 클래스이며, 경로 조작 및 계산을 지원합니다.
    • 용도: 파일 경로를 조작하고, 특정 위치에 있는 파일에 접근할 때 사용합니다.
  • FileChannel
    • 설명: NIO의 채널 기반 입출력을 사용해 대용량 파일을 효율적으로 처리합니다.
    • 용도: 큰 파일을 복사하거나 빠르게 읽고 쓸 때 유용합니다.
  • ClassLoader
    • 설명: 클래스와 리소스를 JVM의 클래스 경로에서 동적으로 로드합니다.
    • 용도: resources 폴더에 있는 리소스 파일이나 클래스를 로드할 때 사용합니다.