본문 바로가기
MEMO/Java-memo

io.. 헷갈리는...

by hingu 2024. 5. 22.

👀 기억하는애
 Buffer 

 

ex) io 사용시 좀더 빨리 가져오기 위함 - FileReader => BufferedReader

 

👀 가져오거나 저장하는애

Stream(InputStream,OutputStream) -> 바이너리(이미지 , 동영상, 오디오, pdf,zip 등..) 

Stream은 byte단위로 변환 후 집어넣어야 함!

byte[] data = ag.getBytes();

InputStream 사용시 read 필수 

 

 FileReader,FileWriter -> ASCII 

 


 

Writer ,Reader ( ASCII 전용 )

FileReader : 문자 데이터 즉 (ASCII)만 해당 / 읽기 - BufferedReader

FileWriter : 문자 데이터 저장파일 ,(ASCII)만 해당 / 쓰기(저장) -BufferedWriter

 

Stream  (바이너리전용-byte )

InputStream : io - buffer 필수 , 걍 출력만 함 -BufferedInputStream 

OutputStream : 대상 파일에 사용자가 입력한 내용을 저장시키는 기능  -BufferedOutputStream 

-> 얘네들의 부모가 InputStream, OutputStream

* BufferedInputStream : byte 내용을 temp 임시 메모리에 저장

 

StreamReader( InputStreamReader , OutputStreamReader ) : 중간다리 

      (StreamWriter도있음)

ASCII전용을 stream(바이너리)으로 가져올시 바로 BufferedReader을 할수 없어 중간에 한번 거쳐서 bufferedReader로 저장해야한다..?

byte data[] = new byte[머시기.available()] (byte를 문자로 바꾸는 과정) 사용 안해도됨

 

InputStream > InputStreamReader > BufferedReader (O)

InputStream > BufferedReader (X)
InputStream > BufferedInputStream (O)
InputStreamReader > BufferedReader (O)

 


 

🌸

flush() : 메모리를 초기화 - write에서는 해주는게 좋음

readLine() : buffer에서 한줄다 읽기

 

available() 

stream 사용시 byte단위로 왓다리갓다리 하기 때문에 string화 시켜야 하는데

그때 byte값을 넣어줘야 함, 그때 사용 => byte temp[] = new byte[fs.available()];

- 현재 읽을수 있는 바이트수를 반환한다.

용량을 몇바이트인지 only 측정만 함  (100 200 이렇게 반환)

 

getBytes()

stream 사용시 유니코드 문자열(String) -> 바이트코드 변환 (보낼때) 

문자를 -> byte 변경만 하는애 , 걍 string에도 가능 (available은 숫자 반환, 얘는 기능을 하는거임  - toString 느낌~ )

https://dev-eunse.tistory.com/82


참고 :  https://ococ99.tistory.com/147

'MEMO > Java-memo' 카테고리의 다른 글

interface 정리  (0) 2024.05.24
abstract 정리  (0) 2024.05.24
해당 디렉토리에 있는 모든 filelist를 가져오는 코드  (0) 2024.05.22
substring  (0) 2024.05.22
byte단위 배열 데이터 출력  (0) 2024.05.21