텍스트 파일을 생성하고 파일에 텍스트 쓰기 세번째 글입니다.


앞서서 설명한 내용과 이번에 설명할 내용의 가장 큰 차이점은, 앞에서 설명한 방식은 Writer를 활용한 쓰기를 말한 것이며 이번에는 OutputStream을 활용한다는 것입니다. FileOutputStream은 OutputStream을 상속한 클래스로서, 파일로 바이트 단위의 출력을 내보내는 클래스 입니다.


 파일에 내용을 쓸 때 FileWriter 및 BufferedWriter를 쓰는 경우와 비교를 했을 때 차이점은, 출력하고자 하는 대상을 먼저 바이트 배열로 바꿔줘야 한다는 것입니다. 왜냐면 앞서 언급된 FileOutputStream의 상위 클래스인 OutputStream은 바이트 단위의 출력을 다루기 때문입니다. 이 과정을 통해 출력 대상 데이터가 일련의 이진 데이터 (binary data)로 변환됩니다.


그리고 flush() 메소드까지 호출한 후에 close() 메소드를 통해 FileOutputStream의 인스턴스를 닫아주어야 한다는 점도 다른점입니다.


예제 코드는 다음과 같습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
 
public class WriteToFile {
    public static void main(String args[]) {
        
        String message = "This is a sample message.\n";
        
        File file = new File("test1.txt");
        FileOutputStream fos = null;
        
        try {
            fos = new FileOutputStream(file);
            
            // FileOutputStream 클래스가 파일에 바이트를 내보내는 역할을 하는 클래스이므로
            // 내보낼 내용을 바이트로 변환을 하는 작업이 필요합니다.
            byte[] content = message.getBytes();
            
            fos.write(content);
            fos.flush();
            fos.close();
            
            System.out.println("DONE");
        } catch(IOException e) {
            e.printStackTrace();
        } finally {
            try {
                if(fos != null) fos.close();
            } catch(IOException e) {
                e.printStackTrace();
            }
        }
    }
}
 
cs


반응형

+ Recent posts