Java에서 Inputstream을 바이트 배열로 변환

Mohammad Irfan 2023년10월12일
  1. Java에서readAllBytes()메서드를 사용하여 InputStream을 바이트 배열로 변환
  2. Java에서toByteArray()메서드를 사용하여 InputStream을 바이트 배열로 변환
  3. Java에서write()메서드를 사용하여 InputStream을 바이트 배열로 변환
  4. Java에서readAllBytes()메서드를 사용하여 InputStream을 바이트 배열로 변환
  5. Java에서readFully()메서드를 사용하여 InputStream을 바이트 배열로 변환
  6. Java에서getBytes()메서드를 사용하여 InputStream을 바이트 배열로 변환
  7. Java에서 사용자 정의 된 코드를 사용하여 InputStream을 바이트 배열로 변환
  8. Java에서toByteArray()메서드를 사용하여 InputStream을 바이트 배열로 변환
Java에서 Inputstream을 바이트 배열로 변환

이 튜토리얼은 Java에서 Inputstream을 바이트 배열로 변환하는 방법을 소개하고 주제를 이해하기위한 몇 가지 예제 코드를 나열합니다.

InputStream은 바이트의 입력 스트림을 나타내는 모든 클래스의 추상 클래스이자 수퍼 클래스입니다. Java는 입력 스트림을 사용하여 파일, 배열 등과 같은 모든 소스에서 데이터를 읽습니다. 그런 다음 Java에서 일부 내장 메서드와 사용자 정의 코드를 사용하여이 스트림을 바이트 배열로 변환하는 방법을 살펴 보겠습니다.

이 기사에서는toByteArray(),readAllBytes(),readFully(),getBytes(),write()등과 같은 여러 내장 메서드와 텍스트 파일abc.txt는 데이터를 읽는 데 사용됩니다. 이 텍스트 파일에는 Welcome to Delfstack이라는 단일 문장이 포함되어 있으며, 읽어서 바이트 배열로 변환 한 후 원하는 결과를 확인하기 위해 문자열로 변환 할 수 있습니다.

Java에서readAllBytes()메서드를 사용하여 InputStream을 바이트 배열로 변환

readAllBytes()메소드를 사용하여 모든 데이터를 바이트 배열로 가져올 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 추가로 전달할 수있는 바이트 배열을 반환합니다.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      byte[] byteArray = ins.readAllBytes();
      System.out.println(new String(byteArray));
      ins.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delfstack

Java에서toByteArray()메서드를 사용하여 InputStream을 바이트 배열로 변환

Apache 라이브러리를 사용하는 경우IOUtils 클래스의toByteArray()메서드를 사용하여 모든 데이터를 바이트 배열로 가져올 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 추가로 전달할 수있는 바이트 배열을 반환합니다.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.commons.io.IOUtils;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      byte[] bytes = IOUtils.toByteArray(ins);
      System.out.println(new String(bytes));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delftstack

Java에서write()메서드를 사용하여 InputStream을 바이트 배열로 변환

ByteArrayOutputStream 클래스의write()메소드를 사용하여 모든 데이터를 바이트 배열로 가져올 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 전달할 수있는 바이트 배열을 반환합니다.

package myjavaproject;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      InputStream ins = new FileInputStream("abc.txt");
      ByteArrayOutputStream buffer = new ByteArrayOutputStream();
      int read;
      byte[] data = new byte[16384];
      while ((read = ins.read(data, 0, data.length)) != -1) {
        buffer.write(data, 0, read);
      }
      System.out.println(new String(data));
      ins.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delfstack

Java에서readAllBytes()메서드를 사용하여 InputStream을 바이트 배열로 변환

DataInputStream 클래스의readAllBytes()메소드를 사용하여 모든 데이터를 바이트 배열로 변환 할 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 추가로 전달할 수있는 바이트 배열을 반환합니다.

import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.IOException;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      DataInputStream dis = new DataInputStream(new FileInputStream(file));
      byte[] bytes = dis.readAllBytes();
      System.out.println(new String(bytes));
      dis.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delftstack

Java에서readFully()메서드를 사용하여 InputStream을 바이트 배열로 변환

RandomAccessFile클래스의 readFully()메서드를 사용하여 모든 데이터를 바이트 배열로 변환 할 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 전달할 수있는 바이트 배열을 반환합니다.

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      InputStream is = new FileInputStream(file);
      RandomAccessFile raf = new RandomAccessFile(file, "r");
      byte[] bytesData = new byte[(int) raf.length()];
      raf.readFully(bytesData);
      System.out.println(new String(bytesData));
      is.close();
      raf.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delfstack

Java에서getBytes()메서드를 사용하여 InputStream을 바이트 배열로 변환

String 클래스의getBytes()메소드를 사용하여 모든 데이터를 바이트 배열로 변환 할 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 추가로 전달할 수있는 바이트 배열을 반환합니다.

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.stream.Collectors;

public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      byte[] bytesData = {};
      InputStream is = new FileInputStream(file);
      try (BufferedReader buffer = new BufferedReader(new InputStreamReader(is))) {
        bytesData = buffer.lines().collect(Collectors.joining("\n")).getBytes();
      }
      System.out.println(new String(bytesData));
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delftstack

Java에서 사용자 정의 된 코드를 사용하여 InputStream을 바이트 배열로 변환

기본 제공 메서드를 사용하지 않으려면이 사용자 지정 코드를 사용하여 입력 스트림을 바이트 배열로 변환합니다. 이 코드는 텍스트 데이터를 인쇄하기 위해String 생성자에 추가로 전달할 수있는 바이트 배열을 반환합니다.

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      byte[] bytesData = {};
      bytesData = getBytesFromFile(new File(file));
      System.out.println(new String(bytesData));
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public static byte[] getBytesFromFile(File file) throws IOException {
    InputStream is = new FileInputStream(file);
    long length = file.length();
    byte[] bytes = new byte[(int) length];
    int offset = 0;
    int numRead = 0;
    while (
        offset < bytes.length && (numRead = is.read(bytes, offset, bytes.length - offset)) >= 0) {
      offset += numRead;
    }
    if (offset < bytes.length) {
      throw new IOException("Could not read file " + file.getName());
    }
    return bytes;
  }
}

출력:

Welcome to Delfstack

Java에서toByteArray()메서드를 사용하여 InputStream을 바이트 배열로 변환

ByteArrayOutputStream 클래스의toByteArray()메소드를 사용하여 모든 데이터를 바이트 배열로 변환 할 수 있습니다. 이 메서드는 텍스트 데이터를 인쇄하기 위해String 생성자에 추가로 전달할 수있는 바이트 배열을 반환합니다.

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class SimpleTesting {
  public static void main(String[] args) {
    try {
      String file = "abc.txt";
      InputStream is = new FileInputStream(file);
      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      is.transferTo(byteArrayOutputStream);
      byte[] bytesData = byteArrayOutputStream.toByteArray();
      System.out.println(new String(bytesData));
      is.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

Welcome to Delfstack

관련 문장 - Java IO