[Day26_2]

NA YE SOM·2023년 8월 3일
0


-> char로 쓰라고
-> t o m 한글자씩 3번 보냄


-> 자기가 알아서 3번 돌렸다

어떤 데이터가 어떤 순서로있는지 알아야 읽을 수 있음


-> char 3개, int1개, double 1개

ex04() java.io.DataInputStream

ex03 복사


순서대로 입력받는 메소드



-> 3번(tom)

write characters로 했기때문에 하나씩 분리되서 들어옴


-> 코드값더하기한 값이라 이상함

★"" 문자열을 초장에 끼어야 문자열 t가 됨

datainputstream dataoutputstream을 한가지로 특화해서 쓰는것 가능
-> 마지막 school

DataOutputstream, DataInputStream은 byte스트림에도 불구하고 한글처리가 가능 -> writeUTF, ReadUTF(일반적으로 선택하지 않음)(알면 활용가능)

(일반적) 바이트 기반 입출력 -> 문자기반의 입출력으로 바꿔서 씀

지금은 정상적으로 처리가됨
byte기반 stream은 원래 한글처리가 안되는데
한글처리가 되는 메소드가 있음

ex05() ObjectInputStream

Student 있어야 함


3장에서 2장의 student 부를수 있나? 부를수있음

import하면 됨

student는 java.lang.package에 있는게 아니고 같은 package에 있는게 아니라서

2장의 student import처리한다음 함


2장의 student


-> Writeobject하던걸 readobject에서 할 수있는데 뭔가 오류가 남

이유?
1.throws쪽
IO EXCEPTION TRY catch 있었는데 여긴 없음
student 클래스 못찾았어 할까봐 나온 것 - classnotfoundexception
2.반환타입 쪽

  1. 동시에 한다면

  1. exception 으로 모두 바꾸기


-> 반환타입이 object이면 student로 저장 불가

-> student를 object로 x
해결) downcasting 부모를 자식으로 내리는 downcasting해야함
= downcasting은 그냥 casting임


-> Object로 저장된 건 그냥 못쓰고 Student로 casting

네트워크상의 특성 : 주고받는거는 문자이외의 데이터가 많은

★"byte기반 스트림"이 기본 default임 (서버 - 클라이언트) -> 통신에서는 기본적으로 한글은 깨짐

: 우리가 작업을 해줘야함, 스트림을 바꾸든
(여기서 배운거 그대로 쓰기)

18_Input_Output_Ex : ex01_mkdirs

★★★Buffered 제일 많이 씀

객체 파일

현재시간,날짜 알아내는 자바 API 쓰고

시간데이터만 활용해서 2023 폴더 안 28 폴더 안 03 폴더 안 14폴더 가 있어야 함

년,월,일,시간 분리해서 와야 함


-> 2중 하나 추출해야함

Calendar, LocalDateTime : 년월일시 추출할때 쓰면 편함




-> month 기반의 day 세는것 (8월 3일)

month를 8이라고 하면 안됨 -> 08이라고 해야함

정수 2자리 표시하는데 부족한 자리 0채우기


-> string + 대신 builder 씀


복습하기 : 13장

ex02_delete


-> 실행이 안된게 아니라 못지움
-> 비어있는 디렉토리만 삭제가능
-> 우리가 만든 디렉토리는 비어있지 않음


-> 지우기 가능

서버에 올라가있는 데이터 지우는 일 거의없음

storage에 모든걸 가져와서 비우기

storage가 비워있지 않으니까 안쪽에서 있는거 가져와서 하나씩 지우기


-> 안쪽 파일다지우고

지우기전에 이름 다 보여주면서 지우기



나를 지우고 부모를 전달해서 부모를 지우고

-> 나를 보냄

재귀 호출 : 자기가 자기를 부르는 것(무한루프에 빠질 확률있음)

-> 하지 X(공부용으로만 하기)

F드라이브(USB) 테스트

16시 부모 한단께 위에


-> c드라이브에 부모가없으니까 종료하겠다

전달된 dir 지우고
상위 dir 가지고 상위 dir알아내고 없으면 그만하고 있으면 지우고



-> 부르고 부모전달

더이상호출할 부모가 없을때) 더 올라갈때가 없을때까지

ex04_Writer


-> 한글 안깨짐

int 하나보낼때 쓰는것
char[], String 여러문자 보낼 때 쓰는것

-> !(느낌표) 잘 안보임

★ 부정연산은 가급적 사용하지 않는다(! 잘안보여서)

★ 밑에처럼 코딩하기!


애초에 주고받는게 문자전용이라 txt로 확인가능


-> 순서대로 다 보내면 Hello world


-> 실제 파일로 보내는 곳은 여기부터


try catch 끝나면 생성끝나도 메시지 출력될것

OutputStream BYTE 기반

(비교하기)

Writer 문자 기반 (문자를 보내기 위하여)

ex02_ java.io.BufferWriter

str1 에 0부터 4글자 보내기(일부만 골라서 보내는것가능)



★★★ex03_PrintWriter 많이 쓰게 될것(서버가 클라이언트에게 데이터를 전송할때 사용하는 기본 writer)- 사용자들에게 데이터 보내거나 직접 코드를 PrintWriter로 만들음(사용자들이 txt받으면 사실은 코드임 , 사용자들이 코드를 친것 같은 효과)

-> 서버측에서 코드를 쳐서 보냄 (사용자들이 받으면 자기들이 친 코드가 됨)
-> 서버가 보낸 코드가 cilent측에서 자동으로 실행됨(한줄에 하나씩 써야함)
-> printwriter같은거 쓰면 하나씩 쓰니까 편함
-> 자바단에서는 쓸일이 많이 없음

  • 자동으로 줄바꿈


-> 표준출력스트림(printout에서 사용하던것)

printline때문에 쓰는것

-> pirntln 메소드 쓰기 위해서 writer쓰는 것



-> 줄바꿀 거니까 공백 채우기


-> filewriter에는 없고 bufferedwriter에는 있고

출력스트림은 덮어쓰기하니까 새로 생김
hell world


-> 보조 스트림없이 해보기

-> println 쓰는게 printwriter의 목적이다

try가 애초에 필요없음



-> 커서가 3번재줄까지 넘어감


-> throws가 없어서 try-catch할 필요 x

close를 finally에 적지 않음

-> try 끝에 close넣어도 문제가 없음(경험이 쌓이면)


-> 한줄적으려고 뒤에 적는것

읽어오기

java가 못하는거라 해당 파일을 분석하는것
<수정>
ex02_OutputStream;


-> 모든 파일 위치 조정

출려스트림 : 덮어쓰기 2개있음

-> 처음에는 새로만들고 그 다음부터는 추가모드

-> 파일이름 : tomcat의 동작로그가 찍힘
-> 서버의 오류 나타나면 : 여기에 적혀있음

ex06_ try_catch_resource


-> resources 자원 : stream (스트림)


-> 애를 쓰면 close안할 수 있음


-> 형식만 바꾸면 finally 필요 없음

속도 향상위해서 buffered 띄움

-> 추가냐 true 다
append : 추가

첫번재 파일에 enter없으니까 enter먼저하기

close 공식적으로 안해도 됨

resources가 문법으로 들어가는 건 아님
(생성만 try옆에서 하기)

-> 한번만 실행해야함
-> 추가모드라 2번 실행하면 2번 들어감

-> 출력은 Close꼭 해야하고 입력은 안해도 됨


ex05_Reader는 내일함

★★★바이트를 문자로 바꾸는 것!(ex05_Reader 많이나옴)

출력이 쉽고 입력이 어려운 편
-> 출력먼저 공부하기!

profile
개발자 velog

0개의 댓글