Table of Contents
ToggleJava 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 提供了幾種常見方法的操作範例。