✔️ InputStream(바이트기반 입력스트림의 최고 조상)
스트림의 종류에 따라서 mark()
와 reset()
을 사용하여 이미 읽은 데이터를 되돌려서 다시 읽을 수 있다.
int read(byte[] b) 활용 ➡️ [Java] inputStream byte[]
✔️ OutputStream(바이트기반 출력스트림의 최고 조상)의 메서드
❗️
flush()
는 버퍼가 있는 출력스트림의 경우에만 의미가 있으며,OutputStream
에 정의된flush()
는 아무런 일도 하지 않는다.
✔️ 바이트배열(byte[])에 데이터를 입출력하는 바이트기반 스트림
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.Arrays;
public class IOEx1 {
public static void main(String[] args) {
byte[] inSrc = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
byte[] outSrc = null;
byte[] temp = new byte[4];
ByteArrayInputStream input = new ByteArrayInputStream(inSrc);
ByteArrayOutputStream output = new ByteArrayOutputStream();
System.out.println("Input Source: " + Arrays.toString(inSrc));
try{
while (input.available() > 0) {
// 읽은 데이터를 배열 temp에 담아서 개수를 반환한다.
int length = input.read(temp);
// temp에서 length만큼 write한다.
output.write(temp, 0 , length);
outSrc = output.toByteArray();
printArrays(temp, outSrc);
}
} catch (IOException ie) {}
}
public static void printArrays(byte[] temp, byte[] outSrc) {
System.out.println("temp: " + Arrays.toString(temp));
System.out.println("Output Source: " + Arrays.toString(outSrc));
}
}
Input Source: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
temp: [0, 1, 2, 3]
Output Source: [0, 1, 2, 3]
temp: [4, 5, 6, 7]
Output Source: [0, 1, 2, 3, 4, 5, 6, 7]
temp: [8, 9, 6, 7]
Output Source: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
output.write(temp, 0 , length);
부분에서 length를 적지 않으면 outSrc는 [0, 1, 2, 3, 4, 5, 6, 7, 8, 6, 7]이 된다.
보다 나은 성능을 위해서 temp
에 담긴 내용을 지우고 쓰는 것이 아니라 그냥 기존의 내용 위에 덮어쓰기 때문이다.
✔️ 파일(file)에 데이터를 입출력하는 바이트기반 스트림
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class FileViewer {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream(args[0]);
FileOutputStream fos = new FileOutputStream(args[1]);
int data = 0;
while((data = fis.read()) != -1) {
fos.write(data);
}
fis.close();
fos.close();
} catch (IOException e) {}
}
}
References
: https://cafe.naver.com/javachobostudy