[Java] File, RandomAccessFile class

SeongWon Oh·2021년 8월 21일
0

Java

목록 보기
36/39
post-thumbnail

File class

  • 파일의 개념을 추상화한 클래스이며 파일 입출력 기능은 없고, 파일의 이름, 경로, 읽기 전용 등의 속성을 알 수 있다.

  • 다양한 method들이 존재한다.

👨🏻‍💻 Example Code

public class FileTest {

	public static void main(String[] args) throws IOException {

		File file = new File("D:\\JAVA_LAB\\Chapter6\\newFile.txt");
		file.createNewFile();
		
		System.out.println("isFile(): "+file.isFile());
		System.out.println("isDirectory(): "+ file.isDirectory());
		System.out.println("getName(): "+ file.getName());
		System.out.println("getAbsolutePath(): "+ file.getAbsolutePath());
		System.out.println("getPath(): "+ file.getPath());
		System.out.println("canRead(): "+ file.canRead());
		System.out.println("canWrite(): "+ file.canWrite());
		
		file.delete();
	}
}

Result
isFile(): true
isDirectory(): false
getName(): newFile.txt
getAbsolutePath(): C:\eclipse-workspace\Chapter6\newFile.txt
getPath(): newFile.txt
canRead(): true
canWrite(): true


RandomAccessFile class

  • 대부분의 입출력 스트림들은 파일에 순차적으로 입출력 작업을 수행한다.

  • RandomAccessFile class는 입출력 클래스 중 유일하게 파일에 대한 입력과 출력을 동시에 할 수 있는 클래스이다.

  • RandomAccessFile 클래스는 파일만을 대상으로한다.

  • 파일 포인터가 있어서 읽고 쓰는 위치의 이동이 가능하다. (seek 메소드를 활용)

  • 순차적인 접근이 아닌 임의의 지접에 접근하여 작업을 수행하고 싶다면 사용하기 좋다.

  • RandomAccessFile 클래스의 생성자에는 인수로 파일의 이름뿐만 아니라 파일 모드까지 함께 전달해야한다.

  • 파일 모드 종류

    • r : 파일을 오로지 읽는 것만 가능한 모드로 개방한다.
    • re : 파일을 읽고 쓰는 것이 모두 가능한 모드로 개방함. 만약 파일이 없으면 새로운 파일을 생성한다.

👨🏻‍💻 Example Code

public class RandomAccessFileTest {

	public static void main(String[] args) throws IOException {
		RandomAccessFile rf = new RandomAccessFile("random.txt", "rw");
		rf.writeInt(100);
		System.out.println("파일 포인터 위치:" + rf.getFilePointer());
		rf.writeDouble(3.14);
		System.out.println("파일 포인터 위치:" + rf.getFilePointer());
		rf.writeUTF("안녕하세요");
		System.out.println("파일 포인터 위치:" + rf.getFilePointer());
	
		rf.seek(0);
		System.out.println("파일 포인터 위치:" + rf.getFilePointer());
		
		int i = rf.readInt();
		double d = rf.readDouble();
		String str = rf.readUTF();
	
		System.out.println("파일 포인터 위치:" + rf.getFilePointer());
		System.out.println(i);
		System.out.println(d);
		System.out.println(str);
	}
}

Result
파일 포인터 위치:4
파일 포인터 위치:12
파일 포인터 위치:29
파일 포인터 위치:0
파일 포인터 위치:29
100
3.14
안녕하세요



Reference

profile
블로그 이전했습니다. -> https://seongwon.dev/

0개의 댓글