article thumbnail image
Published 2021. 12. 20. 19:34
728x90

input 과 output에 대해서 공부하였습니다 .

API IO (input 스트림, output스트림)

입력과 출력을 담당하는 스트림으로 구성된 클래스입니다.

스트림은 테이터의 흐름(흐름의 통로)를 말합니다.

키보드와 마우스를 연결하면 자동으로 스트림이 지나다니는통로가 생성이 됩니다.

 

스트림클래스는 두가지로 나뉩니다. 

 

사진으로 보시는거와 같이 빨간줄에 있는것들이 가장 흔히 쓰이고 중요한클래스라고 보시면 됩니다.

OutputStream 클래스

-1바이트 개념으로 쓰는 최상위 클래스로 추상 클래스입니다.

IO 패키지의 모든 클래스는 생성자에 throws 키워드가 있기 때문에 try~ catch 문과 함께 써야합니다.

 

 

 

먼저 스캐너로 입력받을값을 준비해줍니다. 

파일경로를 지정하는 트라이 캐치 구문안에 파일경로를 지정합니다.

try 구문을 쓸때는 최종적으로 클로스 를 선언해야하는데 그냥 선언을 하기 되면 

에러가 발생합니다.

에러를 처리하기 위해서는 FileOutputStream을 구문 밖에다가 선언을 해줘야 합니다.

FileOutputStream fos = null; 이라고 선언해주고 

트라이 구문안에는 fos = new FileOutputStream("경로..) 선언합니다

finally 안에 fos.close()를 선언하고 try~catch구문을 실행해줍니다.

scan.next()를 받아서 next()안에 엔터값을 제가해주고 

String str = Scan.nextLine()을 다시 받아 값을 적어줍니다.

byte배열안에 string str.getbyte문자열의 바이트데이터를 얻습니다.

파일을 바이트 단위로 내려가면 쓰입니다.

fos.write(arr) 지정경로를 정해줍니다.

 

InputStream - 바이트 단위로 읽는 클래스

1바이트 단위로 읽어서 가져오기 때문에 한글자밖에 안가져옵니다. 한글은 2바이트가 기본이기때문에

읽는데 깨져서 오기때문에 쓰임세는 읽기보단 이미지, 동영상 등에 쓰입니다.

1바이트 단위로 인해 글자를 하나씩 밖에 못가져와 while 반복문을 통해 문장을 가져올수있습니다.

그리고 데이터에서 더이상 읽을 데이터가 없다면 -1을 반환합니다.그렇지 않으면 무한적으로 -1이 돌아갑니다.

주요 메서드는 

read(); - 1바이트씩 읽어주는 바이트

read(byte[] b) - 매개값을 바이트로 받는다.

 

대표적 매서드

write(byte b) - 출력 스트림으로 1바이트를 내보냄

매개변수로는 바이트 배열 아니면 바이트 한글자 사용가능.

 

 

 

 

 

728x90

'잡담' 카테고리의 다른 글

TIL(Today I Learned) #3 이야기  (0) 2024.11.09
아파치 스톰 과 아파치 카프카  (0) 2024.07.16
JDBC -1  (0) 2022.01.13
API-IO (입출력 성능향상 보조 스트림)  (0) 2021.12.20
복사했습니다!