Java에서 InputStream을 문자열로 변환

Rupam Yadav 2023년10월12일
  1. Stream API를 사용하여InputStreamString으로 변환
  2. ByteArrayOutputStream을 사용하여 InputStream을 읽거나 문자열로 변환
  3. Apache Commons의IOUtils.toString을 사용하여 InputStream을 읽거나 문자열로 변환
Java에서 InputStream을 문자열로 변환

이 튜토리얼에서는 Java에서 InputStream을 String으로 변환하는 방법에 대해 설명합니다. InputStream은 읽기와 같은 여러 작업을 수행하는 데 사용할 수있는 바이트 스트림입니다. 일반적으로 모든 것을 바이트 단위로 포함하는 클래스입니다. 이 바이트 스트림을 다른 유형의 데이터로 변환하려면 특정 메서드를 사용해야 할 수 있습니다.

여기서는InputStream을 Java에서 문자열로 읽거나 변환 할 수있는 몇 가지 방법을 살펴 보겠습니다.

Stream API를 사용하여InputStreamString으로 변환

Java 8의 일부인Stream API를 사용하여InputStream을 문자열로 변환 할 수 있습니다.InputStreamReader는 inputStream을 읽고BufferedReader().lines()는이InputStreamString의 스트림. 보시다시피Collectors.joining()은 스트림의 모든 문자열을 결합한 다음 단일 문자열을 반환하는 데 사용됩니다.

package com.company;

import java.io.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream inputStream = new FileInputStream("java/sampleFile.txt");

      InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
      Stream<String> streamOfString = new BufferedReader(inputStreamReader).lines();
      String streamToString = streamOfString.collect(Collectors.joining());

      System.out.println(streamToString);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

This is a sample text file

ByteArrayOutputStream을 사용하여 InputStream을 읽거나 문자열로 변환

우리는InputStream이 바이트로 구성되어 있다는 것을 알고 있으므로readInputStream을 바이트 배열로 변환하는ByteArrayOutputStream 클래스를 사용할 수 있습니다. 그런 다음toString()을 사용하여이 바이트 배열을 문자열로 변환 할 수 있습니다.

package com.company;

import java.io.*;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream readInputStream = new FileInputStream("java/sampleFile.txt");

      String encoding = "UTF-8";

      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
      byte[] byteSize = new byte[1024];

      int length;
      while ((length = readInputStream.read(byteSize)) != -1) {
        byteArrayOutputStream.write(byteSize, 0, length);
      }

      System.out.println(byteArrayOutputStream.toString(encoding));

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

This is a sample text file

Apache Commons의IOUtils.toString을 사용하여 InputStream을 읽거나 문자열로 변환

작업을 쉽게하기 위해 Apache Commons 라이브러리에 포함 된IOUtils.toString 함수를 사용할 수 있습니다. Apache Commons Library를 사용하기 위해 프로젝트에이 종속성을 포함 할 수 있습니다.

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.8.0</version>
</dependency>

아래 예에서는 먼저 텍스트 파일 인InputStream을 생성 한 다음InputStream과 스트림 변환에 사용할 인코딩을받는IOUtils.toString()메서드를 호출합니다. 우리는 보편적으로 사용되는 UTF-8 인코딩을 사용하고 있습니다.

package com.company;

import java.io.*;
import org.apache.commons.io.IOUtils;

public class Main {
  public static void main(String[] args) {
    try {
      InputStream inputStream = new FileInputStream("java/sampleFile.txt");

      String steamToString = IOUtils.toString(inputStream, "UTF-8");
      System.out.println(steamToString);

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

출력:

This is a sample text file
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java String

관련 문장 - Java IO