English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 기본 튜토리얼

Java 흐름 제어

Java 배열

Java 객체 지향(I)

Java 객체 지향(II)

Java 객체 지향(III)

Java 예외 처리

Java 목록(List)

Java Queue(큐)

Java Map 집합

Java Set 집합

Java 입력 출력(I/O)

Java Reader/Writer

Java 다른 주제

Java ByteArrayOutputStream 클래스

이 튜토리얼에서는 예제를 통해 Java ByteArrayOutputStream 및 메서드를 배울 것입니다.

java.io 패키지의 ByteArrayOutputStream 클래스는 바이트 단위로 출력 데이터 배열을 쓰기 위해 사용될 수 있습니다.

OutputStream 추상 클래스를 상속받았습니다.

주의:ByteArrayOutputStream에서 데이터를 저장하는 내부 바이트 배열을 유지합니다.

ByteArrayOutputStream 생성

ByteArrayOutputStream 출력 스트림을 생성하기 위해, 먼저 java.io.ByteArrayOutputStream 패키지를 가져와야 합니다. 패키지를 가져온 후, 출력 스트림을 생성할 수 있습니다.

//기본 크기의 ByteArrayOutputStream 생성
ByteArrayOutputStream out = new ByteArrayOutputStream();

여기서, 기본 크기가32바이트의 배열이 있습니다. 그러나, 배열의 기본 크기를 변경할 수 있습니다.

//지정된 크기를 가진 ByteArrayOutputStream 생성
ByteArrayOutputStream out = new ByteArrayOutputStream(int size);

여기서 size는 배열의 길이를 지정합니다.

ByteArrayOutputStream 메서드

ByteArrayOutputStream 클래스는 OutputStream 클래스에 존재하는 다양한 메서드의 구현을 제공합니다.

write() 메서드

  • write(int byte) - 지정된 바이트를 출력 스트림에 쓰기

  • write(byte[] array) - 지정된 배열의 바이트를 출력 스트림에 쓰기

  • write(byte[] arr, int start, int length)- start 위치에서 length 길이의 바이트 수를 배열의 출력 스트림에 쓰기

  • writeTo(ByteArrayOutputStream out1) -현재 출력 스트림의 모든 데이터를 지정된 출력 스트림에 쓰기

예제: ByteArrayOutputStream 데이터 쓰기

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() 메서드는 문자열을 바이트 배열로 변환합니다.

ByteArrayOutputStream에서 데이터에 접근합니다.

  • 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() 메서드를 사용할 수 있습니다.

그러나, close() 메서드는 ByteArrayOutputStream 클래스에서 유효하지 않습니다. close() 메서드를 호출했더라도 이 클래스의 메서드를 사용할 수 있습니다.

ByteArrayOutputStream의 다른 메서드

메서드콘텐츠 설명
size()출력 스트림 중 배열의 크기를 반환합니다.
flush()출력 스트림 지우기