Java String到InputStream

时间:2020-02-23 14:34:33  来源:igfitidea点击:

今天,我们将研究如何在Java中将String转换为InputStream。
最近,我写了一篇文章将InputStream转换为String。

Java String到InputStream

我曾用两种方法将String转换为InputStream。

  • Java IO ByteArrayInputStream类
  • Apache Commons IO IOUtils类

让我们看一下使用这些类的示例程序。

使用ByteArrayInputStream将Java字符串转换为InputStream

import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.Charset;

public class StringToInputStreamUsingByteArrayInputStream {

	public static void main(String[] args) throws IOException {
		String str = "convert String to Input Stream Example using ByteArrayInputStream";

		//convert using ByteArrayInputStream
		InputStream is = new ByteArrayInputStream(str.getBytes(Charset.forName("UTF-8")));

		//print it to console
		BufferedReader br = new BufferedReader(new InputStreamReader(is));

		String line = br.readLine();

		while (line != null) {
			System.out.println(line);
			line = br.readLine();
		}
	}

}

使用Apache Commons IOUtils将字符串转换为InputStream

import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;

import org.apache.commons.io.IOUtils;

public class StringToInputStreamUsingIOUtils {

	public static void main(String[] args) throws IOException {
		String str = "Example using Apache Commons IO class IOUtils";

		InputStream stream = IOUtils.toInputStream(str, Charset.forName("UTF-8"));

		stream.close();
	}

}

如果您已经在使用Apache Commons IO jar,则可以使用IOUtils,否则没有任何好处,因为它在内部使用ByteArrayInputStream类。
以下是来自IOUtils类源代码的toInputStream方法实现。

public static InputStream toInputStream(final String input, final Charset encoding) {
      return new ByteArrayInputStream(input.getBytes(Charsets.toCharset(encoding)));
  }