RandomAccessFile — 임의 접근이 가능한 파일 읽기·쓰기

RandomAccessFile — 임의 접근이 가능한 파일 읽기·쓰기

RandomAccessFile은 파일에 대한 임의 접근(random access)을 지원하는 클래스예요. 읽기 전용, 쓰기 전용, 또는 읽기·쓰기 모드로 파일을 열 수 있으며, 파일의 어떤 위치에서든 읽고 쓸 수 있어요. 위치는 파일 포인터(file pointer)로 추적되며 seek로 이동할 수 있어요.

출처: Java API Reference

본문

기본 RandomAccessFile은 스트림이라기보다 임의 위치 접근 파일로, 데이터 입력·출력 기능(DataInput, DataOutput)과 위치 이동 기능을 함께 제공합니다. 파일에 성공적으로 열리고 나면 파일 포인터는 0(파일 시작)에서 시작하며, 읽기·쓰기는 파일 포인터 위치에서 진행돼요.

생성자

  • RandomAccessFile(String name, String mode) — 파일 이름과 모드로 엽니다. 모드는 "r"(읽기 전용), "rw"(읽기·쓰기), "rws"(읽기·쓰기 + 메타데이터 동기화), "rwd"(읽기·쓰기 + 내용 동기화)가 있어요.
  • RandomAccessFile(File file, String mode)File 객체와 모드로 엽니다.

파일이 존재하지 않거나 열 수 없으면 FileNotFoundException, 잘못된 모드면 IllegalArgumentException을 던져요.

메서드 (주요)

  • int read(), int read(byte[] b, int off, int len) — 파일 포인터 위치에서 바이트를 읽어요.
  • void write(int b), void write(byte[] b, int off, int len) — 파일 포인터 위치에 바이트를 써요.
  • long getFilePointer() — 현재 파일 포인터 위치를 반환해요.
  • void seek(long pos) — 파일 포인터를 지정한 위치로 이동해요.
  • long length() — 파일 길이를 반환해요.
  • void setLength(long newLength) — 파일 길이를 설정해요.
  • long skipBytes(int n) — 파일 포인터를 앞으로 이동해요.
  • int readInt(), readLong(), readUTF(), writeInt(int), writeLong(long), writeUTF(String) 등 — DataInput/DataOutput의 기본형 읽기·쓰기 메서드예요.
  • FileChannel getChannel() — 파일 채널을 반환해요.
  • FileDescriptor getFD() — 파일 설명자를 반환해요.
  • void close() — 파일을 닫아요.

RandomAccessFile은 데이터베이스 파일, 인덱스 파일처럼 특정 위치의 데이터를 직접 읽고 쓰는 응용에 적합해요.

더 알아보기 (Learn more)