Java 94(FileOutputStream, 파일 생성하기, 작성하기[원시데이터] (1Byte))

Kang.__.Mingu·2024년 5월 22일
0

Java

목록 보기
96/108

FileOutputStream

  • 파일에 원시데이터를 전달하여 저장할 수 있는 출력스트림을 생성하기 위한 클래스

  • FileOutputStream(String name) 생성자를 사용하여 FileOutputStream 객체 생성

    • name 매개변수에는 출력 스트림을 생성하기 위한 파일경로를 전달하여 저장
    • name 매개변수로 전달받은 파일경로에 파일이 없는 경우 FileNotFoundException 발생
  • 파일 출력스트림을 생성할 때 매개변수로 전달받은 파일이 없는 경우 자동으로 파일을 생성해 파일 출력 스트림을 제공하므로 FileNotFoundException은 예외 처리하지 않고 전달

매개변수로 전달받은 파일이 있는 경우 기존 파일내용을 초기화하여 새로운 내용으로 저장하는 방법

  • 같은 폴더, 파일 이름으로 저장했을 시 초기화하여 새로운 내용으로 작성됨
FileOutputStream 참조변수명  = new FileOutputStream("c:/data/byte.txt");

초기화하지 않고 기존 내용에 추가하여 작성하는 방법

  • FileOutputStream(String name, boolean append) 생성자를 사용하여 FileOutputStream 객체 생성
    • append 매개변수에 [true]를 전달할 경우 name 매개변수로 전달받은 파일이 있으면 기존 내용의 새로운 내용을 추가하여 저장되도록 처리
  • 뒤에 true만 추가하면 기존 내용의 다음줄부터 작성됨
FileOutputStream 참조변수명  = new FileOutputStream("c:/data/byte.txt", true);

시스템 종료 방법

  • 이클립스: Ctrl + Z
  • 인텔리제이: Ctrl + F2

  • 키보드로 원시데이터를 입력받아 파일에 전달하여 저장하는 프로그램 작성
import java.io.FileOutputStream;
import java.io.IOException;

// => EoF 신호(Ctrl + Z - 입력 종료)를 받으면 프로그램 종료
public class FileOutputStreamApp {
    public static void main(String[] args) throws IOException {
        // 인텔리제이 프로그램 종료: Ctrl + Z
        System.out.println("[메세지] 키보드를 눌러 값을 입력해주세요[프로그램 종료: Ctrl + Z]");

        // FileOutputStream 클래스: 파일에 원시데이터를 전달하여 저장할 수 있는 출력스트림을
        // 생성하기 위한 클래스
        // => FileOutputStream(String name) 생성자를 사용하여 FileOutputStream 객체 생성
        // => name 매개변수에는 출력 스트림을 생성하기 위한 파일경로를 전달하여 저장
        // => name 매개변수로 전달받은 파일경로에 파일이 없는 경우 FileNotFoundException 발생
        // 파일 출력스트림을 생성할 때 매개변수로 전달받은 파일이 없는 경우 자동으로 파일을
        // 생성해 파일 출력 스트림을 제공하므로 FileNotFoundException은 예외 처리하지 않고 전달

        // => 매개변수로 전달받은 파일이 있는 경우 기존 파일내용을 초기화하여 새로운 내용으로 저장
        // FileOutputStream out  = new FileOutputStream("c:/data/byte.txt");

        // FileOutputStream(String name, boolean append) 생성자를 사용하여 FileOutputStream 객체 생성
        // => append 매개변수에 [true]를 전달할 경우 name 매개변수로 전달받은 파일이
        // 있으면 기존 내용의 새로운 내용을 추가하여 저장되도록 처리
        FileOutputStream out  = new FileOutputStream("c:/data/byte.txt", true);


        int readByte;
        while(true) {
            // 키보드 입력스트림으로 원시데이터를 제공받아 변수에 저장
            // => FileNotFoundException 클래스는 IOException 클래스의 자식클래스이므로
            // FileNotFoundException 클래스 대신 IOException 클래스로 예외 처리 가능
            readByte = System.in.read();

            if(readByte == -1) break;

            // 파일 출력스트림으로 원시데이터를 전달하여 저장 - Save
            out.write(readByte);
        }
        // FileOutputStream.close(): 파일 출력스트림을 제거하는 메소드
        // => 파일에는 입력스트림과 출력스트림을 각각 하나씩만 생성하여 사용 가능하므로
        // 입력스트림 또는 출력스트림 사용한 후에는 반드시 제거
        out.close();

        System.out.println("[결과] c:\\data\\byte.txt 파일을 확인해 보세요");
    }
}
profile
최선을 다해 꾸준히 노력하는 개발자 망고입니당 :D

0개의 댓글