JAVA/Java2021-3

OutputStream -FileOutputStream(바이트 단위), 실습

RoarinGom 2021. 10. 23. 12:09

OutputStream : 바이트 단위 출력 스트림의 최상위 클래스

 

FileOutputStream

: FileInputStream의 경우 파일이 존재하지 않으면 FileNotFoundException이 생긴다

FileOutputStream의 경우 파일이 존재하지 않으면 파일이 생성됨.(기존에 있는 경우 default 실행은 overwrite)

So, 이어서 쓰고 싶을 땐 FileOutputStream("파일명",true); 해주면 overwrite대신 이어서 덮어쓴다.

 

예제1) 파일에 한 바이트 씩 쓰기(write 하기)

package Basic_Grammar.chap6.ch08FileIO;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamTest1 {
    public static void main(String[] args) {
        try (FileOutputStream fileOutputStream = new FileOutputStream("output.txt")) {
            //write이용하여 한바이트씩 쓰기
            fileOutputStream.write(65);
            fileOutputStream.write(65);
            fileOutputStream.write(65);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("End");
    }
}

 

예제2) A-Z까지 byte[] 배열에 넣고 한꺼번에 파일 쓰기(write 하기)

package Basic_Grammar.chap6.ch08FileIO;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileOutputStreamTest2 {
    public static void main(String[] args) throws IOException {
        FileOutputStream fileOutputStream = new FileOutputStream("output2.txt",true);
        try (fileOutputStream) {//java 9부터 지원되는 문법
            //byte[]에 쓸거다
            byte[] bs=new byte[26];
            byte data=65;
            for (int i = 0; i < bs.length; i++) {
                bs[i]=data++;
            }
            fileOutputStream.write(bs);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        System.out.println("End");
    }
}