다연이네

[days25] FileOutputStream을 이용해 파일 만들기 본문

Java

[days25] FileOutputStream을 이용해 파일 만들기

 다연  2020. 10. 25. 13:58
반응형

1. 문자열 입력받아 파일 만들기

package test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class Re02 {

	public static void main(String[] args) {
		// OutputStream : 바이트 스트림의 최상위 부모 클래스
		// 파일로 저장하는 역할 (저장=쓰기=출력)
		
		InputStream is = System.in;
		OutputStream os = null;
		String path = "dayeon_Review.dat";
		byte buffer[] = new byte[1024];
		
		try {
			System.out.println(">저장할 문자열 입력 ? ");
			int n = is.read(buffer); //read로 키보드로 입력받아 buffer에 저장
			os = new FileOutputStream(path); //현위치에 path명으로 파일 생성
			os.write(buffer, 0, n); //파일에 buffer의 모든 내용 출력
            
            // String 문자열을 FileOutputStream 바이트스트림을 사용해서 저장
            //	String -> byte로 변환을 시켜야 os.write() 사용 가능
			
			
			os.flush();
			os.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		System.out.println("=END=");
		

	}

}

입력된 문자열
생성된 파일.dat

* flush 스트림에 쓴 바이트를 물리적으로 옮기는 것 (실제 쓰기 작업)

   - 어떤 곳은 flush 안쓰기도 한다 (close만 쓴다)(close만 써도 내부적으로 flush가 일어나긴하나, 정확히 알아두기)
* close 다른 사람을 위해 자원 해제 - 리소스는 클로즈 필수

 

2. 고정된 문자열(입력받지 않고) 파일로 만들기 

package test;

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

public class Re03 {

	public static void main(String[] args) {
		
		
		String message = "동주나 뭐해 ? ";
		String path = "doonjjun.dat";

		OutputStream os = null;
	
		//String -> byte[]		로 변환해야지 os.write 사용 가능
		//message -> buffer	작업 필요
		
		
		try {
			os = new FileOutputStream(path);
			byte buffer[] = message.getBytes(); //String => byte[]
			
			for (int i = 0; i < buffer.length; i++) {
				os.write(buffer[i]); // 버퍼의 모든 문자 쓰기
			}
			
			os.flush();
			os.close();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		System.out.println("=END=");

	}

}

고정된 문자열로 파일.dat 생성

반응형
Comments