본문 바로가기

명사 美 비격식 (무리 중에서) 아주 뛰어난[눈에 띄는] 사람[것]

JAVA

바이트기반스트림 InputStream의 메서드 available() close() markSupported() mark() reset() read() skip()

 

 

InputStream과 OutputStream은 모든 바이트기반 스트림의 조상이다.

https://standout.tistory.com/1470

 

스트림 - 바이트기반 스트림: FileInputStream/FileOutputStream ByteArrayInputStream/ByteArrayOutputStream PipedInputStr

앞서 스트림과 입출력에 대해 배워봤다. https://standout.tistory.com/106 스트림이란? Stream 개울, 흘러가는것, 가는길 데이터를 운반하는데 사용되는 연결통로 https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%8A%B8%EB%A6%

standout.tistory.com

 

 

 

InputStream의 메서드는 아래와같다.

 

 

int available()
현재 읽을 수 있는 바이트의 개수를 반환.

InputStream inputStream = new FileInputStream("file.txt");
int availableBytes = inputStream.available();
System.out.println("Available bytes: " + availableBytes);

[출력결과]
Available bytes: 1024

 

 

 

void close()
입력 스트림을 닫는다.

inputStream.close();

[출력결과]
출력 결과가 없다.

 

 

 

boolean markSupported()
입력 스트림이 mark() 및 reset() 메서드를 지원하는지 여부를 나타낸다.
mark()와 reset()의 기능지원은 선택적임으로 사용하기전에 호출해 지원여부를 확인해야한다.

boolean isMarkSupported = inputStream.markSupported();
System.out.println("Mark Supported: " + isMarkSupported);

[출력결과]
Mark Supported: true

 

 

void mark(int readlimit)
현재위치를 표시해 후에 reset에 의해 돌아갈 수 있도록 한다.
readlimit는 되돌아갈 수 있는 byte의 수.

inputStream.mark(100);

[출력결과]
출력 결과가 없다.

 

 

void reset()
마지막으로 표시한 위치로 이동.

inputStream.reset();

[출력결과]
출력 결과가 없다.

 

 

abstract int read()
입력 스트림으로부터 다음 바이트를 읽는다.
더 이상 읽어 올 데이터가 없으면 -1을 반환한다.

int nextByte = inputStream.read();
System.out.println("Next byte: " + nextByte);

[출력결과]
Next byte: 65 (예시로 'A'에 해당하는 ASCII 값)

 

 

int read(byte[] b)
배열 b만큼을 채우고 읽어온 데이터의 수를 반환한다.

byte[] buffer = new byte[10];
int bytesRead = inputStream.read(buffer);
System.out.println("Bytes read: " + bytesRead);

[출력결과]
Bytes read: 10

 

 

int read(byte[] b, int off, int len)
최대 len개의 byte를 읽어 배열 b의 off의 위치부터 저장한다.

byte[] buffer = new byte[10];
int bytesRead = inputStream.read(buffer, 0, 5);
System.out.println("Bytes read: " + bytesRead);

[출력결과]
Bytes read: 5

 

 

long skip(long n)
입력 스트림에서 n만큼의 바이트를 건너뛴다.

long bytesSkipped = inputStream.skip(10);
System.out.println("Bytes skipped: " + bytesSkipped);

[출력결과]
Bytes skipped: 10

 

 

 

 

OutputStream의 메서드는 아래와같다.

void close()

void flush()

abstract void write(int b)

void write(byte[] b, int off, int len)