Day 020
오늘은 어제에 이어서 네트워킹에서 파일 입출력을 배우고 보조스트림 개념도 배웠다. 그 밖에 과제 해결을 위해 Thread.sleep() 메서드와 Date 객체 등등을 배웠다. 오늘의 과제는파일을 지정된 폴더에, 시간에 맞추어 주기적으로 복사하는 것이었는데, 혼자했으면 막막했을텐데 등원해서 조원님의 도움을 받아서 쉽게 완성할 수 있었다. 대면수업의 장점이 빛을 발한 오늘이었다 ㅎㅎ 네트워킹도 절반 넘게 진행된거 같다. 금요일에 테스트를 보니 사실상 이틀이 남은셈인데, 아직은 완벽하게 감을 잡았다는 느낌이 오지 않는다. 내일 수업 전에 책을 한번 더 봐야겠다.
FileInputStream
파일로부터 바이트 단위로 읽어 들일 때 사용
그림, 오디오, 비디오, 텍스트 파일 등 모든 종류의 파일을 읽을 수 있음
InputStream 하위 클래스 - 사용 방법이 InputStream과 동일
객체 생성 방법
FileInputStream 객체가 생성될 때 파일과 직접 연결
만약 파일이 존재하지 않으면 FileNotFoundException 발생
try-catch문으로 예외 처리
FileInputStream fis = new FileInputStream("C:/Temp/TTT.java");
FileOutputStream
파일에 바이트 단위로 데이터를 저장할 때 사용
그림, 오디오, 비디오, 텍스트 등 모든 종류의 데이터를 파일로 저장
OutputStream 하위 클래스 - 사용 방법이 OutputStream과 동일
객체 생성 방법
파일이 이미 존재할 경우, 데이터를 출력하게 되면 파일을 덮어쓰는 단점
따라서 기존 파일 내용 끝에 데이터를 추가할 경우 두번째 매개변수로 true를 주어야한다
FileOutputStream fos = new FileOutputStream ("C:/Temp/data.txt", true);
FileReader
텍스트 파일로부터 데이터를 읽어 들일 때 사용
문자 단위로 읽음
텍스트가 아닌 그림, 오디오, 비디오 등의 파일은 읽을 수 없음
Reader 하위 클래스 - 사용 방법 Reader와 동일
객체 생성 방법
(1) FileReader fr = new FileReader("C:/Temp/file.txt");
(2) File file = new File("C:/Temp/file.txt");
FileReader fr = new FileReader(file)
FileReader 객체가 생성될 때 파일과 직접 연결
만약 파일이 존재하지 않으면 FileNotFoundException 발생
try-catch문으로 예외 처리
FileWriter
텍스트 파일에 문자 데이터를 저장할 때 사용
텍스트가 아닌 그림, 오디오, 비디오 등의 데이터를 파일로 저장 불가
Writer 하위 클래스 - 사용 방법이 Writer와 동일
객체 생성 방법
File file = new File("C:/Temp/ttt.java", true);
FileWriter fw = new FileWriter(file, true);
파일이 이미 존재할 경우, 데이터를 출력하게 되면 파일을 덮어쓰게 됨
기존 파일 내용 끝에 데이터를 추가할 경우 위와 같이 true를 붙여준다
보조 스트림
다른 스트림과 연결 되어 여러 가지 편리한 기능을 제공해주는 스트림
문자 변환, 입출력 성능 향상, 기본 데이터 타입 입출력, 객체 입출력 등의 기능을 제공
입력스트림-보조스트림-프로그램-보조스트림-출력스트림
보조 스트림 생성
보조스트림 변수 = new 보조스트림 (연결스트림)
보조스트림 체인 : 보조스트림끼리 연결도 가능
입력스트림-보조스트림-보조스트림-프로그램-보조스트림-보조스트림-출력스트림
문자 변환 보조 스트림
소스 스트림이 바이트 기반 스트림이지만 데이터가 문자일 경우 사용
Reader와 Writer는 문자 단위로 입출력 - 바이트 기반 스트림보다 편리
문자셋의 종류를 지정할 수 있기 때문에 다양한 문자 입출력 가능
InputStreamReader
바이트 -> InputStream -> InputStreamReader -> 문자 -> 프로그램
Reader reader = new InputStreamReader(바이트입력스트림);
OutputStreamWriter
프로그램 -> 문자 -> OutputStreamWriter -> OutputStream -> 바이트
Writer writer = new OutputStreamWriter(바이트입력스트림);
성능 향상 보조 스트림
입출력 성능에 영향을 미치는 입출력 소스
하드 디스크, 느린 네트워크 ...
버퍼를 이용한 해결
입출력 소스와 직접 작업하지 않고 버퍼(buffer)와 작업 - 실행 성능 향상
프로그램 ---데이터고속전송---> 메모리버퍼 ---버퍼내용모두전송---> 하드디스크
프로그램은 쓰기 속도 향상
버퍼 차게한 뒤 데이터를 한꺼번에 하드 디스크로 보내 출력 횟수를 줄여줌
BufferedInputStream, BufferedReader
프로그램 <---고속읽기--- 보조스트림 <---미리버퍼에채워둠--- 입력소스
BufferedInputStream bis = new BufferedInputStream(바이트입력스트림);
BufferedReader br = new BufferedReader(문자입력스트림)
BufferedOutputStream, BufferedWriter
프로그램 ---고속전송---> 보조스트림 ---버퍼내용모두전송---> 목적지
BufferedOutputStream bos = new BufferedOutputStream(바이트출력스트림);
BufferedWriter bw = new BufferedWriter(문자출력스트림)
기본 타입 입출력 보조 스트림
들어오는건 바이트타입인데, 프로그램에서는 기본데이터 타입(int double)을 쓸 때가 있다
바이트->InputStream->DataInputStream->프로그램->DataOutputStream->OutputStream -> 바이트
DataInputStream dis = new DataInputStream(바이트입력스트림);
DataOutputStream dos = new DataOutputStream(바이트출력스트림);
프린터 보조 스트림
프로그램 -> 기본타입/문자열 -> PrintStream/PrintWriter -> OutputStream/Writer -> 문자 코드로 출력
PrintStream ps = new PrintStream(바이트출력스트림);
PrintWriter pw = new PrintWriter(문자출력스트림);
'국비학원' 카테고리의 다른 글
[국비지원] KH 정보교육원 22일차 (0) | 2022.04.25 |
---|---|
[국비지원] KH 정보교육원 21일차 (0) | 2022.04.21 |
[국비지원] KH 정보교육원 19일차 (0) | 2022.04.19 |
[국비지원] KH 정보교육원 18일차 (0) | 2022.04.18 |
[국비지원] KH 정보교육원 17일차 (0) | 2022.04.15 |