Java Convert String to InputStream - Java 147

Java Convert String to InputStream – Java 147

Java Convert String to InputStream

指定字串,使用 ByteArrayInputStream 將 String 轉換為 InputStream 物件,在 ByteArrayInputStream 中存在一個內部緩衝區,其中包含從流中讀取的 byte 值, Java String InputStream 任務是將字串轉換為 InputStream ,本篇增加了範例,並透過單元測試來驗證產出結果。

檔案目錄

./
   +- src
       +- test
       |   +- org
       |       +- ruoxue
       |           +- java_147
       |               +- conversion
       |                   +- string
       |                       +- StringToInputStreamTest.java   

單元測試

Java String to InputStream 提供字串轉換成 InputStream 等操作。

byteArrayInputStream

Java String to InputStream 使用 ByteArrayInputStream 將字串轉換成 InputStream 物件。

	@Test
	public void byteArrayInputStream() {
		String value = "java147,springboot168,junit151,bash460,it484";
		InputStream is = null;
		try {
			is = new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8));
			System.out.println(is);

			StringBuilder builder = new StringBuilder();
			try (BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(is, StandardCharsets.UTF_8))) {
				String buff = null;
				while ((buff = bufferedReader.readLine()) != null) {
					builder.append(buff);
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			String result = builder.toString();
			System.out.println(result);
			assertEquals(value, result);
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException ex) {
				}
			}
		}
	}
java.io.ByteArrayInputStream@573fd745
java147,springboot168,junit151,bash460,it484

byteArrayInputStreamTryWithResources

Java String to InputStream 使用 ByteArrayInputStream 將字串轉換成 InputStream 物件,以及用 Try-with-resources 關閉串流。

	@Test
	public void byteArrayInputStreamTryWithResources() {
		String value = "java147,springboot168,junit151,bash460,it484";
		try (InputStream is = new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8))) {
			System.out.println(is);

			StringBuilder builder = new StringBuilder();
			try (BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(is, StandardCharsets.UTF_8))) {
				String buff = null;
				while ((buff = bufferedReader.readLine()) != null) {
					builder.append(buff);
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			String result = builder.toString();
			System.out.println(result);
			assertEquals(value, result);
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}
java.io.ByteArrayInputStream@573fd745
java147,springboot168,junit151,bash460,it484

byteArrayInputStreamThrowException

Java String to InputStream 使用 ByteArrayInputStream 將字串轉換成 InputStream 物件,傳入 Charset 參數為 null 值,會拋出例外。

	@Test(expected = NullPointerException.class)
	public void byteArrayInputStreamThrowException() {
		String value = "java147,springboot168,junit151,bash460,it484";
		InputStream is = null;
		try {
			is = new ByteArrayInputStream(value.getBytes((Charset) null));
			System.out.println(is);

			StringBuilder builder = new StringBuilder();
			try (BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(is, StandardCharsets.UTF_8))) {
				String buff = bufferedReader.readLine();
				while (buff != null) {
					builder.append(buff);
					buff = bufferedReader.readLine();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			String result = builder.toString();
			System.out.println(result);
			assertEquals(value, result);
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException ex) {
				}
			}
		}
	}
java.lang.NullPointerException
	at java.lang.String.getBytes(String.java:940)
	at org.ruoxue.java_147.string.StringToInputStreamTest.byteArrayInputStreamThrowException(StringToInputStreamTest.java:53)

StringToInputStreamTest.java

Convert String to InputStream in Java 新增單元測試,驗證是否符合預期。

package org.ruoxue.java_147.conversion.string;

import static org.junit.Assert.*;

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

import org.junit.Test;

public class StringToInputStreamTest {

	@Test
	public void byteArrayInputStream() {
		String value = "java147,springboot168,junit151,bash460,it484";
		InputStream is = null;
		try {
			is = new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8));
			System.out.println(is);

			StringBuilder builder = new StringBuilder();
			try (BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(is, StandardCharsets.UTF_8))) {
				String buff = null;
				while ((buff = bufferedReader.readLine()) != null) {
					builder.append(buff);
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			String result = builder.toString();
			System.out.println(result);
			assertEquals(value, result);
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException ex) {
				}
			}
		}
	}

	@Test
	public void byteArrayInputStreamTryWithResources() {
		String value = "java147,springboot168,junit151,bash460,it484";
		try (InputStream is = new ByteArrayInputStream(value.getBytes(StandardCharsets.UTF_8))) {
			System.out.println(is);

			StringBuilder builder = new StringBuilder();
			try (BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(is, StandardCharsets.UTF_8))) {
				String buff = null;
				while ((buff = bufferedReader.readLine()) != null) {
					builder.append(buff);
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			String result = builder.toString();
			System.out.println(result);
			assertEquals(value, result);
		} catch (IOException ex) {
			ex.printStackTrace();
		}
	}

	@Test(expected = NullPointerException.class)
	public void byteArrayInputStreamThrowException() {
		String value = "java147,springboot168,junit151,bash460,it484";
		InputStream is = null;
		try {
			is = new ByteArrayInputStream(value.getBytes((Charset) null));
			System.out.println(is);

			StringBuilder builder = new StringBuilder();
			try (BufferedReader bufferedReader = new BufferedReader(
					new InputStreamReader(is, StandardCharsets.UTF_8))) {
				String buff = bufferedReader.readLine();
				while (buff != null) {
					builder.append(buff);
					buff = bufferedReader.readLine();
				}
			} catch (IOException ex) {
				ex.printStackTrace();
			}
			String result = builder.toString();
			System.out.println(result);
			assertEquals(value, result);
		} finally {
			if (is != null) {
				try {
					is.close();
				} catch (IOException ex) {
				}
			}
		}
	}
}

心得分享

String to InputStream in Java 使用 Java 所提供的 ByteArrayInputStream 將 String 轉換成 InputStream , Convert String to InputStream in Java 提供了幾種常見方法的操作範例。

發佈留言