▸JAVA/라이브러리(API)

java.io.FileWriter 주요 메소드 [1/1]

코데방 2019. 12. 15.
728x90

[ FileReader ]

  • FileOutputStream과 유사한 기능
  • 문자 스트림으로서 문자 단위의 바이트 변환 기능을 가짐

FileOutputStream 클래스가 바이트 스트림이라면 FileWriter 클래스는 문자 스트림입니다. 즉, 바이트 단위가 아닌 문자 단위로 입출력을 수행합니다. 

 

외부 리소스 입출력에 대한 개념과 설명은 아래 링크글을 참조하시면 됩니다.

2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_io / nio / nio2 [1/3]

2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.io [2/3]

2019/12/16 - [JAVA/기본 문법] - 외부 데이터 입출력_java.nio [3/3]

 


 

[ 생성자 ]

  • new FileWriter(File file)
  • new FileWriter(FileDescriptor jdObj)
  • new FileWriter(String name)
  • new FileWriter(File file, boolean append) - 추가모드
  • new FileWriter(String name, boolean append) - 추가모드

FileOutputStream 클래스의 생성자와 동일합니다. 파일의 주소와 이름 정보를 가진 객체를 받아 해당 파일과의 출력 스트림을 생성합니다. 또한 추가모드로 열지 않으면 기존 파일 내용은 모두 삭제되고 새로 덮어쓰기 모드로 열립니다. 잘 못 열면 기존 파일 내용이 모두 날아갈 수 있으니 주의해야 합니다.

 

경로가 없으면 예외가 발생하고 파일이 없으면 새로 만들어줍니다.

 


 

[ void write() ]

  • void write(char[] cbuf) : 한 문자 또는 배열에 있는 내용을 모두 파일에 출력
  • void write(char[], int off, int len) : 배열의 'off'번째부터 'len'개의 문자를 출력
  • void write(int c) : 유니코드를 제공하면 문자로 변환하여 출력
  • void write(String str) : 문자열을 파일에 출력
  • void write(String str, int off, int len) : 문자열의 'off'번째부터 'len'개의 문자를 출력

package study.first;

import java.io.FileWriter;

public class Test {
	public static void main(String[] args) {

		String arr = "Hello World..!";
		
		// try-with-resources구문으로 리소스 자동 해제 수행 
		try (FileWriter fo = new FileWriter("output.txt")) {
				
			fo.write(arr.charAt(0)); // output.txt에 "H" 출력
			fo.write(arr);           // output.txt에 "Hello World..!" 출력
			fo.write(arr, 0, 5);     // output.txt에 "Hello" 출력
			fo.write(97);            // output.txt에 "a" 출력
			fo.write("안뇽");         // output.txt에 "안뇽" 출력
			fo.write("안녕하세요", 0, 2); // "안녕" 출력

		} catch (Exception e) {			
			System.out.println("예외처리");
		}
	}
}

 


[ void append() ]

  • write() 메소드와 유사하지만, 배열이 아닌 문자열 형태만 매개변수로 받음
  • write() 메소드로 모두 대체 가능하기 때문에 굳이 따로 사용할 필요는 없어보임

 

[ void close() ]

  • 현재 열려 있는 파일을 닫음
  • try-with-resource문 사용 시 자동으로 자원 해제가 되므로 불필요
  • try-catch-finally문 사용 시 사용해줘야 메모리 누수를 방지하고 다른 곳에서 리소스 사용이 가능함
  • finally문 내에서도 역시 예외처리를 해줘야 함

 

[ void flush() ]

  • BufferedWriter 클래스를 통해 버퍼에 출력했따면, 버퍼에 있는 데이터를 모두 파일로 옮김
  • BufferedWriter 클래스에서 오버라이딩해서 사용
  • 버퍼 인스턴스.flush() 로 사용
package study.first;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

public class Main {
	public static void main(String[] args) {

		File path = new File("C:\\JAVA\\Test\\test.txt");
		try (FileWriter file = new FileWriter(path)) {

			BufferedWriter buf = new BufferedWriter(file);

			String[] str = { "버퍼로\n문자를 입력해보자" };

			// 버퍼에 str의 문자를 출력
			for (String a : str) {
				buf.write(a + '\n');
			}

			// 버퍼에 쌓인 문자를 모두 파일로 옮김
			buf.flush();

		} catch (Exception e) {

			System.out.println("실패");
		}
	}
}
728x90

댓글

💲 추천 글