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=");
}
}
* 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=");
}
}
반응형