④ RandomAccessFile:
파일은 보통 순차적으로 읽고 쓰는데, RandomAccess는 파일내 임의의 위치에 있는 데이터에 접근할 수 있도록 하는 기능이다. 이는 대용량 파일에서 특정 위치에 있는 데이터를 빠르게 찾아내기 위해 사용된다.
따라서, 파일의 시작부터 끝까지 순차적으로 데이터를 읽거나 쓰는 기본 스트림을 RandomAccess 보조 스트림에는 굳이 생성해 줄 필요가 없다.
RandomAccess의 문법을 살펴보면 하기와 같다. 여기서 모드는 총 4가지 이다.
"r":읽기 / "w":쓰기 / "rw": 읽고쓰기 / "a": 이어쓰기 중에 선택하여 " " 와 함께 사용하면 된다.
RandomAccessFile acc = new RandomAccessFile(파일경로, 모드);
아래의 예제를 통해 자세히 살펴 보쟈
package 입출력;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccess {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
RandomAccessFile acc = new RandomAccessFile("src/입출력/files/b.txt","r");
byte [] buf = new byte[10];
int size = acc.read(buf); //배열 크기만큼 읽음
System.out.println(new String(buf));
System.out.println("읽은 크기:" + size);
System.out.println("현재 위치:"+acc.getFilePointer()); //현재 커서 위치 반환
System.out.println("현재 위치의 문자:"+(char)acc.read());
System.out.println("현재 위치:"+acc.getFilePointer());
acc.seek(acc.getFilePointer()+5); //seek : 읽고 쓸 위치 변경
System.out.println("현재 위치:"+acc.getFilePointer());
System.out.println("현재 위치의 문자:"+(char)acc.read());
acc.close();
}catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
'JAVA' 카테고리의 다른 글
[JAVA] 입출력 스트림 ⑤ 파일 복사 (0) | 2023.03.13 |
---|---|
[JAVA] 입출력 스트림 ⑥ 파일 제어 및 디렉토리 (0) | 2023.03.13 |
[JAVA] 입출력 스트림 ④ 보조스트림 _ 바이트를 문자로 (0) | 2023.03.13 |
[JAVA] 입출력 스트림 ④ 보조스트림 _ Object (0) | 2023.03.13 |
[JAVA] 입출력 스트림 ④ 보조스트림 _ Buffered (0) | 2023.03.13 |