본문 바로가기

java/자바

IO 입출력

 

 

 

 

1. read() 메소드

read() 1바이트 씩 읽는다.

int readByte에 읽은 데이터를 저장한다.

 

 

 

test.txt 는 5바이트다.

while로 read()를 돌린다. read() 메소드가 읽어오지 못하면 -1을 반환한다.

 

while 무한루프로 사용하는 방법이다. 

 

 

 

 

바이트를 출력하는 것이 아니라. char 로 강제 타입 변환하면

아스키 코드가 문자로 변환된다.

 

 

 

 

 

2. 매개값으로 바이트 배열 전달

매개변수 배열에 따라 읽어오는 바이트 수가 달라진다.

읽은 데이터는 바이트 배열에 저장된다

 

길이 3 바이트 배열을 생성한다.

readByteNo은 3,2,-1 로 값이 변한다.

읽은 데이터의 길이를 반환한다.

 

 

text.txt 5바이트다.

 

 

 

 

readByteNo == 읽은 바이트 수 == 읽은 데이터 길이

readBytes == 읽은 데이터 == 바이트 배열에 저장함

 

 

 

 

is.read(readBytes) is(text.txt)파일을 readBytes바이트배열에 읽어온다.

 

 

test.txt 총 5바이트인데

read(3바이트) --> readByteNo의 값은 3바이트를 읽고, 2바이트를 읽어온다.

 

무한루프로 하고 break로 멈추는 방법

 

읽은 문자열을 문자열로 보여주기

실제로 읽은 문자열은

readBytes 에 있다. 배열에!!! readByteNo이 아니다.

new String (읽어온 데이터 저장한 배열, 0부터 , 읽은 데이터 길이) 

데이터를 문자로 바꾼다.

data에 문자열로 붙인다

 

 

3.  read(데이터 배열, 시작, 읽은 데이터 길이)

 

읽은 길이를 반환한다. 그래서 3

 

 

 

읽어올 데이터 배열의 크기는 8 바이트

2부터 시작해서 3개까지 읽어옴

결과로 배열[0], 배열[1] 은 읽어오지 않아서 0으로 출력됨

 

왼쪽 코드와 오른쪽 코드는 똑같은 실행결과를 얻는다

 

 

close 메소드: 자원 문 닫기

 

 


OutputStream

 

 

1. witre(바이트)

ABC 라는 글씨를 text.txt 에 저장하기
한 바이트씩 쓴다.

파일 아웃풋 스트림을 만든다.

ABC라는 문자열로부터 바이트를 얻어낸다.

배열 바이트를 돌면서 text.txt 파일에 바이트 하나하나를 쓴다.

 

 

 

 

예외를 적어야 한다.

 

문자열 ABC에서 바이트 배열을 얻는다.

한 바이트씩 저장한다.

flush() 는 버퍼의 내용을 비워준다.

사용 이유: 버퍼가 꽉차야 실제 버퍼가 출력이 되는데, 빈 배열값이 있으면 출력이 되지 않아서 강제 출력한다.

버퍼에 남지 않게 해준다.

 

2. 매개 변수 write(바이트 배열)

write()와 달리 1바이트씩하지 않고 큰 배열로 값을 출력하기 때문에
for문이 필요없다

 

 

 

 

 

3. 매개변수 3개 writre(바이트 배열, 시작 인덱스, 몇개 읽을까 길이)

 

 


리더 클래스

최상위 클래스

추상 클래스 == new로 생성하지 못한다.

문자만 읽을 수 있다. 바이트는 못 읽는다.

 

 

 

read() 한문자를 읽는다. 2바이트 == 한 문자
read( char [] 데이터 배열) 읽은 데이터는 char[] 배열에 저장한다.
읽은 데이터의 길이를 리턴한다.
read( char [] 데이터 배열, 시작 인덱스, 읽을 길이) 읽은 데이터는 char[] 배열에 저장한다.
읽은 데이터의 길이를 리턴한다.

 

 

 

 

 

1. read() 함수

한문자를 읽는다. 2바이트 == 한 문자
for문 사용한다
읽을 문자가 없으면 -1 반환한다.

강제 형변환

읽을 문자가 없으면 -1 반환

 

한문자씩 읽기때문에 while은 두번 돈다.

한문자를 읽는다. 2바이트 == 한 문자

 

 

 


Writer 클래스

 

 

 

 

 

String 도 파일에 글씨를 쓸 수 있다.

'java > 자바' 카테고리의 다른 글

18.4 파일 입출력  (0) 2022.02.02
18.3 콘솔 입출력  (0) 2022.01.31
문자열 자르기  (0) 2022.01.25
enum 열거타입  (0) 2022.01.24
[java] 추상 클래스  (0) 2022.01.01