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 |