파일 쓰기(출력)
- 쓰기 작업을 지원해주는 스트림(Stream) 객체 > 덮어쓰기 모드
파일 쓰기 모드
1. 덮어쓰기 모드(기본)
- 기존 내용을 삭제하고 다시 파일을 생성 후 데이터를 작성한다.
- 파일이 있으면 파일을 다시 생성
- 파일이 없으면 파일을 새로 생성
2. 이어쓰기 모드
- 기존 내용을 유지하고, 이어서 데이터를 추가한다.
- 파일이 있으면 파일을 그대로 사용 후 추가
- 파일이 없으면 파일을 새로 생성
1. 덮어쓰기 모드
try {
//데이터를 저장할 파일을 참조
File file = new File("C:\\class\\code\\java\\file\\data.txt"); //경로 지정
//저장할 파일의 스트림 객체를 생성
- 빨대 꽂기
- 스트림 열기
FileOutputStream stream = new FileOutputStream(file); //file이 불안정(없을수도 있으니까) -> 예외처리(try-catch) 필요
//File을 출력할 수 있는 Output Stream
쓰기 > 문자 코드값(빨대 꽂아서 stream을 연 것)
stream.write(65); //65 : A
stream.write(66); //66 : B
stream.write(67); //67 : C
> 다른 문자코드값을 65, 66, 67대신 입력하면 추가가 아니라 덮어쓰기가 됨
- 빨대 뽑기
- 스트림 닫기(열었던 stream은 반드시 닫아야 함)
stream.close();
System.out.println("완료");
//윈도우 탐색기를 열어서 data에 가보면 data.txt 파일이 생성되어 있고, 열면 ABC가 적혀있음
} catch(Exception e) {
e.printStackTrace();
}
2-1. 이어쓰기 모드
try {
//데이터를 저장할 파일을 참조
File file = new File("C:\\class\\code\\java\\file\\data2.txt");
저장할 파일의 스트림 객체를 생성
- 빨대 꽂기
- 스트림 열기
FileOutputStream stream = new FileOutputStream(file, true); //false면 덮어쓰기, true면 이어쓰기 모드
쓰기 > 문자 코드값(빨대 꽂아서 stream을 연 것)
stream.write(65); //65 : A
stream.write(66); //66 : B
stream.write(67); //67 : C
stream.write(68); //68 : D
stream.write(69); //69 : E
stream.write(70); //70 : F
> 기존값 입력 후 지우고 그 자리에 다른 값을 입력해도 기존값+추가값(이어쓰기)가 됨
- 빨대 뽑기
- 스트림 닫기(열었던 stream은 반드시 빼야 함)
stream.close();
System.out.println("완료");
//윈도우 탐색기를 열어서 data에 가보면 data.txt 파일이 생성되어 있고, 열면 ABCDEF가 적혀있음
} catch(Exception e) {
e.printStackTrace();
}
2-2. 이어쓰기 모드
try {
//데이터를 저장할 파일을 참조
File file = new File("C:\\class\\code\\java\\file\\data2.txt");
저장할 파일의 스트림 객체를 생성
- 빨대 꽂기
- 스트림 열기
FileOutputStream stream = new FileOutputStream(file, true);
쓰기 > 문자 코드값(빨대 꽂아서 stream을 연 것)
stream.write('\r');
stream.write('\n');
stream.write('j');
stream.write('a');
stream.write('v');
stream.write('a');
String txt = "Hello Java!!"; //문자열에서 글자 추출 가능
for(int i=0; i<txt.length(); i++) {
char c = txt.charAt(i);
stream.write(c); //메모장에 문자열에서 뽑은 글자들 입력
}
byte[] list = {'A', 'B', 'C' }; //배열에서도 추출 가능
stream.write(list); //배열값들 메모장에 입력
String txt = "Java Programming";
stream.write(txt.getBytes()); //문자열 txt에 있는 글자들을 바이트 단위로 출
바이트 단위 쓰기(1byte씩 저장: 한글 저장을 못함. 한 글자(2byte)를 반씩 쪼개서 적음 -> 오류)
stream.write('가'); //오류남
stream.write('나');
stream.write('다');
- 빨대 뽑기
- 스트림 닫기(열었던 stream은 반드시 빼야 함)
stream.close();
System.out.println("완료");
//윈도우 탐색기를 열어서 data에 가보면 data.txt 파일이 생성되어 있고,
열면 java, Hello Java!!, ABC, Java Programming, 가 적혀있음
} catch(Exception e) {
e.printStackTrace();
}
'[JAVA] 정리 > 파일(file)' 카테고리의 다른 글
| 파일(file) - 9. 파일 쓰기 FileWriter (0) | 2023.02.27 |
|---|---|
| 파일(file) - 8. 파일 읽기 InputStream (0) | 2023.02.27 |
| 파일(file) - 6. 텍스트 입출력_기본 지식 (0) | 2023.02.27 |
| 파일(file) - 5. 폴더 속 폴더 속 파일 보기 (0) | 2023.02.27 |
| 파일(file) - 4. 파일 조작(재귀 메소드) (0) | 2023.02.27 |