English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
이 튜토리얼에서는 예제를 통해 Java ByteArrayOutputStream 및 메서드를 배울 것입니다.
java.io 패키지의 ByteArrayOutputStream 클래스는 바이트 단위로 출력 데이터 배열을 쓰기 위해 사용될 수 있습니다.
OutputStream 추상 클래스를 상속받았습니다.
주의:ByteArrayOutputStream에서 데이터를 저장하는 내부 바이트 배열을 유지합니다.
ByteArrayOutputStream 출력 스트림을 생성하기 위해, 먼저 java.io.ByteArrayOutputStream 패키지를 가져와야 합니다. 패키지를 가져온 후, 출력 스트림을 생성할 수 있습니다.
//기본 크기의 ByteArrayOutputStream 생성 ByteArrayOutputStream out = new ByteArrayOutputStream();
여기서, 기본 크기가32바이트의 배열이 있습니다. 그러나, 배열의 기본 크기를 변경할 수 있습니다.
//지정된 크기를 가진 ByteArrayOutputStream 생성 ByteArrayOutputStream out = new ByteArrayOutputStream(int size);
여기서 size는 배열의 길이를 지정합니다.
ByteArrayOutputStream 클래스는 OutputStream 클래스에 존재하는 다양한 메서드의 구현을 제공합니다.
write(int byte) - 지정된 바이트를 출력 스트림에 쓰기
write(byte[] array) - 지정된 배열의 바이트를 출력 스트림에 쓰기
write(byte[] arr, int start, int length)- start 위치에서 length 길이의 바이트 수를 배열의 출력 스트림에 쓰기
writeTo(ByteArrayOutputStream out1) -현재 출력 스트림의 모든 데이터를 지정된 출력 스트림에 쓰기
import java.io.ByteArrayOutputStream; class Main { public static void main(String[] args) { String data = "This is a line of text inside the string."; try { //출력 스트림을 생성합니다. ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] array = data.getBytes(); //데이터를 출력 스트림에 쓰여집니다. out.write(array); //출력 스트림에서 데이터를 문자열 형식으로 검색합니다. String streamData = out.toString(); System.out.println("출력 스트림: " + "\t" + streamData); out.close(); } catch(Exception e) { e.getStackTrace(); } } }
출력 결과
출력 스트림: "This is a line of text inside the string."
위의 예제에서는 output라는 이름의 바이트 배열 출력 스트림을 생성했습니다.
ByteArrayOutputStream output = new ByteArrayOutputStream();
데이터를 출력 스트림에 쓰기 위해 write() 메서드를 사용합니다.
주의: 프로그램에서 사용하는 getBytes() 메서드는 문자열을 바이트 배열로 변환합니다.
toByteArray() - 출력 스트림에 존재하는 배열을 반환합니다.
toString() - 출력 스트림의 전체 데이터를 문자열 형태로 반환합니다.
예를 들어,
import java.io.ByteArrayOutputStream; class Main { public static void main(String[] args) { String data = "This is data."; try { //출력 스트림을 생성합니다. ByteArrayOutputStream out = new ByteArrayOutputStream(); //데이터를 출력 스트림에 쓰여집니다. out.write(data.getBytes()); //바이트 배열을 반환합니다. byte[] byteData = out.toByteArray(); System.out.print("사용하는 toByteArray() 데이터: " + "\t" for(int i=0; i<byteData.length; i++) { System.out.print((char)byteData[i]); } //문자열을 반환합니다. String stringData = out.toString(); System.out.println("\n사용하는 toString() 데이터: " + "\t" + stringData); out.close(); } catch(Exception e) { e.getStackTrace(); } } }
출력 결과
toByteArray()을 사용한 데이터: This is data. toString()을 사용한 데이터: This is data.
위의 예제에서는 toByteArray() 메서드가 반환하는 데이터를 저장하기 위해 바이트 배열을 생성했습니다.
그런 다음 for 루프를 사용하여 배열의 각 바이트를 방문합니다. 여기서는 각 바이트를 해당 문자로 변환하는 타입 변환을 사용합니다.
출력 스트림을 닫기 위해 close() 메서드를 사용할 수 있습니다.
그러나, close() 메서드는 ByteArrayOutputStream 클래스에서 유효하지 않습니다. close() 메서드를 호출했더라도 이 클래스의 메서드를 사용할 수 있습니다.
메서드 | 콘텐츠 설명 |
---|---|
size() | 출력 스트림 중 배열의 크기를 반환합니다. |
flush() | 출력 스트림 지우기 |