RandomAccessFile
파일내에서 원하는 위치로 이동할 수 있는 Java의 클래스
파일의 내용을 읽거나 쓰는 데 사용될 수 있으며, 파일 내의 임의 위치로 이동하여 데이터를 읽거나 쓸 수 있다.
다른 입출력 스트림과는 달리 RandomAccessFile은 파일 내의 어떤 위치든 접근할 수 있다.
`RandomAccessFile(File file, String mode)` : 지정된 파일 객체 및 모드로 `RandomAccessFile` 인스턴스를 생성한다.
`RandomAccessFile(String fileName, String mode)` : 지정된 파일 이름 및 모드로 `RandomAccessFile` 인스턴스를 생성한다.
`FileChannel getChannel()` : 파일의 `FileChannel`을 반환합니다. 이 채널을 통해 파일에 대한 I/O 작업을 수행할 수 있다.
`FileDescriptor getFD()`: 파일 디스크립터를 반환한다
`long getFilePointer()`: 현재 파일 포인터의 위치를 반환한다.
`long length()`: 파일의 길이를 반환한다.
`void seek(long pos)`: 파일 포인터를 지정된 위치로 이동한다.
'void setLength(long newLength)`: 파일의 길이를 설정한다. 파일의 길이를 늘리거나 줄일 수 있다.
`int skipBytes(int n)`: 현재 파일 포인터에서 `n`바이트를 건너뛴다. 파일 포인터는 'n'바이트만큼만 이동하고 실제로 읽지않는다.
"test.txt" 파일에 데이터를 쓰고, 파일 포인터를 이동하여 데이터를 읽는 예시이다.
import java.io.*;
public class RandomAccessFileExample {
public static void main(String[] args) {
try {
// RandomAccessFile 인스턴스 생성
RandomAccessFile file = new RandomAccessFile("test.txt", "rw");
// 파일에 데이터 쓰기
file.writeUTF("Hello, RandomAccessFile!");
// 현재 파일 포인터의 위치 확인
System.out.println("현재 파일 포인터의 위치: " + file.getFilePointer());
// 파일의 길이 확인
System.out.println("파일의 길이: " + file.length());
// 파일 포인터 이동
file.seek(0);
// 파일에서 데이터 읽기
String readData = file.readUTF();
System.out.println("파일에서 읽은 데이터: " + readData);
// 파일 닫기
file.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}