FileOutStream 클래스
- 데이터를 파일 시스템의 파일에 바이트 스트림으로 저장하기 위해 사용된다.
- OutputStream(바이트 스트림) 클래스의 하위 클래스
- 기본적으로 파일이 없으면 생성하고, 이미 존재하면 그 파일에 덮어 씀으로 기존 내용은 사라진다.
import java.io.FileOutputStream;
import java.io.IOException;
public class Ex11_FileOutputStream {
public static void main(String[] args) {
String pathname = "test.txt";
// 파일에 내용을 저장하는 byte 스트림
FileOutputStream fos = null; // 메모리할당을 받지 않음.
// 쓰레기를 가지고 있음.
// 초기화되어있지 않아서. ex; int a;
int data;
try { // 이 블록은 무조건 실행하는 것은 아님
fos = new FileOutputStream(pathname); // 메모리할당받음
// 해당 파일이 없으면 생성하고, 존재하면 삭제하고 만듦.
System.out.println("문자열 입력[Ctrl+Z:종료]");
while( (data = System.in.read()) != -1) {
fos.write(data);
}
fos.flush();
System.out.println("파일 저장 완료...");
} catch (IOException e) {
e.printStackTrace();
} finally {
if(fos != null) { // 메모리할당되어있으면 닫아야함.
try {
fos.close(); // 리소스를 닫아주어야 에러가 생기지 않음.
} catch (Exception e2) {
}
}
}
}
}
위와 같은 의미
import java.io.FileOutputStream;
import java.io.IOException;
public class Ex12_FileOutputStream {
public static void main(String[] args) {
String pathname = "test.txt";
int data;
// JDK 7.0부터 가능 자동 close
try (FileOutputStream fos = new FileOutputStream(pathname)) {
System.out.println("문자열 입력[종료:ctrl+z]");
while( (data = System.in.read()) != -1) {
fos.write(data);
}
fos.flush();
System.out.println("파일 저장 완료...");
} catch (IOException e) {
// ctrl+shift+o : 자동 import
e.printStackTrace();
}
}
}
try( 리소스 객체 생성) 하게 되면 자동으로 close 해주기 때문에 따로 finally 에서 문자열입력을 받았으면 (객체가 생성되었으면) 닫는 부분의 코딩을 안해도된다.
키보드로 입력한 값을 1byte씩 읽고 1byte씩 파일에 넣기 때문에 문자가 잘 들어가진다.
FileOutputStream(String name) 주어진 이름의 파일을 바이트 스트림으로 쓰기 위한 FileOutputStream객체를 생성한다.
'쌍용강북교육센터 > 8월' 카테고리의 다른 글
0823_Java : FileCopy 파일 복사하기 (0) | 2021.08.24 |
---|---|
0823_Java : FileInputStream 클래스 (0) | 2021.08.24 |
0823_Java : BufferedReader 클래스 (0) | 2021.08.24 |
0823_Java : Writer 클래스 (0) | 2021.08.24 |
0823_Java : Reader 클래스 (0) | 2021.08.23 |