HOWTO · Java

Java에서 InputStream을 문자열로 변환

이 기사에서는 예제를 사용하여 Java에서 InputStream을 문자열로 변환하는 방법을 설명합니다.

이 페이지의 내용

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

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

Stream API를 사용하여InputStream을String으로 변환

Java 8의 일부인Stream API를 사용하여InputStream을 문자열로 변환 할 수 있습니다.InputStreamReader는 inputStream을 읽고BufferedReader().lines()는이InputStream을 String의 스트림. 보시다시피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