16일차 메모
지난시간리뷰)
IO->STREAM
INPUTSTREAM->System.in(복습), OUTPUTSTREAM->System.out(복습) => 1byte 처리 스트림
~READER(InputstreamReader/filereader), ~WRITE(OutputstreamWrite/filewriter) => 2byte 처리 스트림, 추상클래스-> 자식클래스 이용해서 써야됨(여기복습필요)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
사진뽑기실행(경로찾아서)
근원지,목적지 복습
공백까지 뽑을 때 -> String s = scan.nextLine();
next(), nextLine() 메소드 비교(검색확인하기)
코어작성하고 try,catch 덮음
중간에 실행되는지 에러 확인하고 진행!
<<처리단위가 다르기때문에>>
FileOutputStream/FileInputStream 클래스의
모든데이터는 byte단위로 처리해야한다 =>2바이트처리클래스는 String만 뽑기에 txt파일만들때는 2바이트처리클래스 사용
그 외(이미지 등등)는 1바이트처리클래스 써야됨.
flush(); ->데이터 내보내줌(버퍼에 담기면 다 찰 때까지 안 내보내기 때문에)
**IO클래스 파트에서 핵심은
부모자식 관계를 따져서 필요한 기능을 API에서 데려다 쓸수있는 것
이게 안되면 각 기능에 해당하는 클래스와 메소드들을 외워서 사용할 수 밖에없음..
buffered~ buffered붙어있으면 2바이트처리
용량이작은경우 -> print~
용량이큰경우 ->buffered~
읽어오고 쓰는애들 쌍으로 찾아 메소드연습할것
BufferedInputStream in = new BufferedInputStream(new FileInputStream("test4.dat"),1024);
풀어쓴거랑 위의 축약형생성 타이핑 연습
※재학습 사항
1. io 기능적으로 큰 줄기 구분(intput<->output / stream <-> reader,writer / buffered)
2. io 부모자식관계에 따른 사용법(추상클래스의 경우 System.in등의 자체 메소드 또는 해당 클래스를 참조할 수 있는 부모클래스의 메소드를 사용한다)
3. 코드작성순서; 코어부터 작성 1)io클래스 작성 2)입출력 메소드 작성 / 부차사항1)출력 시 전체가 나오게(바이트단위다루는 io클래스는 한 번 실행 시 극히 일부만 출력하게됨) while()문으로 코어코드 돌린다 / 부차사항2) import 및 try catch로 예외처리 한다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
질문사항;
1.
BufferedReader br=new BufferedReader(new FileReader("student.txt"));
위의 식이 동작하는 이유는 FileReader 와 BufferReader는 java.io.Reader라는 공통조상을 가지고 있어서다?
=> X (핵심은 가장 밑에 자식 기능을 사용->위에 부모들의 기능을 모두 사용할 수 있기에 활용범위가 높다.)
그래서 항상 사용할 수 있는 가장 밑에 sub클래스 사용하는 것
이 경우 FileReader가 BufferedReader보다 sub클래스.
2.(Test04)
InputStream is = System.in;
Reader in = new InputStreamReader(is);
BufferedReader br = new BufferedReader(in);
InputStreamReader가 아닌 Reader인 이유?, 즉 InputStreamReader의 부모 Reader를 자식객체 참조하는이유?
IInputStreamReader in = new InputStreamReader(is); 해도 오류안남
2-2) BufferedReader 쓰는 이유는 readLine(); ->String 읽을 수 있기 때문에
read
가져와서 활용하기 위함.
write
갖고있는 값을 저장이나 출력.
Stream => byte(1byte)단위로 처리함
Reader, Writer는 char(2byte)단위로 처리함.