10. 파일 입 · 출력 - (1)File객체 생성과 Writer / Reader

한승록·2023년 5월 11일
0

자바 기초

목록 보기
20/21
post-thumbnail

1) 구성

File 클래스파일폴더를 관리하는 클래스 입니다.
해당 클래스를 사용하기 위해 객체를 생성함에 있어 4가지의 생성자가 존재합니다.


File 생성자
  1. File(String pathname) : pathname 위치를 가리키는 파일 객체 생성
  2. File(File parent, String child) : parent 폴더에 child 위치를 가리키는 파일 객체 생성
  3. File(String parent, String child) : parent 폴더에 child의 위치를 가리키는 파일 객체 생성
  4. File(URI uri) : uri의 위치를 가리키는 파일 객체 생성

<※ 코드는 다음과 같습니다.>

		File f1 = new File("a.txt");			// File(String fileName)
		File f2 = new File("C:\\test");			// 파일 및 디렉토리(폴더)를 모두 포함한다
		File f3 = new File("C:\\test", "b.txt");// File(String parent, String child)
		File f4 = new File(f2, "c.txt");		// File(File parent, String child)




2) Writer / Reader

이번에는 파일을 읽고 쓰는 방법에 대해 말씀드리겠습니다.
FileWriterFile클래스 자료형과 boolean자료형의 매개 변수를 전달하여 객체 생성이 이루어집니다.
지정한 File 매개변수에 내용을 저장하고 boolean 매개변수 값true 면 기존값을 유지하고 false 면 새로운 내용으로 덮어 쓰게 됩니다.

  		// (상단의 코드에서 이어집니다.)
  
  		File f2 = new File("a.txt");
		
		if(f2.exists() == false) {
			f2.createNewFile();
		}
		
		// FileWriter(File dest, boolean append)
		// 지정한 dest 파일에 내용을 기록한다.
		// append가 true이면 기존내용을 유지하고 추가한다. false면 덮어쓴다
		
		FileWriter fw = new FileWriter(f2, false);
		BufferedWriter bw = new BufferedWriter(fw);
		bw.write("Hello\n");
		bw.write("안녕하세요\n");
		bw.flush();
		bw.close();
이후 BufferedWriter를 통해 내용을 장석한 뒤 내장 메서드 flush()를 사용하여 BufferedWirter의 객체에 담긴 내용을 밀어내게 됩니다.
Buffered의 가장 큰 핵심은 원래 일정 데이터가 모여야 자동으로 밀어내는데 flush()메서드를 통해 원하는 수준에서 해당 작업을 수행할 수 있다는 것입니다.



하지만 FileReader는 방식의 차이를 보입니다.
FileReader는 파일의 내용을 읽어 올때 char자료형으로 읽어 오기 때문에 한글자씩 읽어 오게 됩니다.
따라서 FileWriter와 같이 Buffered클래스를 사용하게 되지만 readline() 메서드를 활용하여 반복문을 통한 출력이 이루어지게 됩니다.
		
  		// (상단의 코드에서 이어집니다.)
		FileReader fileReader = new FileReader(f);
		BufferedReader br = new BufferedReader(fileReader, 1024);
		String line;
		
		while((line = br.readLine()) != null) {
			System.out.println(line);
		}
		System.out.println("읽기 끝");
		br.close();
		fileReader.close();
  
profile
개발 학습

0개의 댓글