这个例子将展示如何将InputStream转换成String。在下面的代码片段中我们读入一个data.txt文件,该文件可能来自于一个普通的文件夹或者来自jar文件中。
1 package org.kodejava.example.io;
2
3? import java.io.InputStream;
4? import java.io.IOException;
5? import java.io.BufferedReader;
6? import java.io.InputStreamReader;
7
8? public class StreamToString {
9
10???? public static void main(String[] args) throws Exception {
11???????? StreamToString sts = new StreamToString();
12
13???????? /*
14????????? * 从数据文件中得到InputStream. 这个文件可以在应用程序的根目录下
15????????? * 或者如果这个程序被打包成了一个jar, 它可以在这个jar文件的内部.
16????????? *
17????????? */
18???????? InputStream is = sts.getClass().getResourceAsStream("/data.txt");
19
20???????? /*
21????????? * 调用将InputStream转成String的函数
22????????? */
23???????? System.out.println(sts.convertStreamToString(is));
24???? }
25
26???? public String convertStreamToString(InputStream is) throws IOException {
27???????? /*
28????????? * 为了将InputStream转换成String我们使用函数BufferedReader.readLine().
29????????? * 我们迭代调用BufferedReader直到其返回null, null意味着没有其他的数据要读取了.
30????????? * 每一行将会追加到StringBuilder的末尾, StringBuilder将作为String返回。
31????????? *
32????????? */
33???????? if (is != null) {
34???????????? StringBuilder sb = new StringBuilder();
35???????????? String line;
36
37???????????? try {
38???????????????? BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
39???????????????? while ((line = reader.readLine()) != null) {
40???????????????????? sb.append(line).append("\n");
41???????????????? }
42???????????? } finally {
43???????????????? is.close();
44???????????? }
45???????????? return sb.toString();
46???????? } else {
47???????????? return "";
48???????? }
49???? }
50 }