stream to strings:将多个文件合并为一个字符串

时间:2011-03-09 19:15:57

标签: java file-io

我有两个文本文件,我想作为流抓取并转换为字符串。最终,我希望合并两个单独的文件。

到目前为止,我已经

     //get the input stream of the files. 

    InputStream is =
            cts.getClass().getResourceAsStream("/files/myfile.txt");


     // convert the stream to string

    System.out.println(cts.convertStreamToString(is));

getResourceAsStream不会将多个字符串作为参数。那么我需要做什么?单独转换它们并合并在一起?

有人能告诉我一个简单的方法吗?

4 个答案:

答案 0 :(得分:6)

听起来你想要连接流。您可以使用SequenceInputStream从多个流创建单个流。然后从该单个流中读取数据并根据需要使用它。

以下是一个例子:

String encoding = "UTF-8"; /* You need to know the right character encoding. */
InputStream s1 = ..., s2 = ..., s3 = ...;
Enumeration<InputStream> streams = 
  Collections.enumeration(Arrays.asList(s1, s2, s3));
Reader r = new InputStreamReader(new SequenceInputStream(streams), encoding);
char[] buf = new char[2048];
StringBuilder str = new StringBuilder();
while (true) {
  int n = r.read(buf);
  if (n < 0)
    break;
  str.append(buf, 0, n);
}
r.close();
String contents = str.toString();

答案 1 :(得分:2)

答案 2 :(得分:0)

我可以想到几个方面 创建一个StringBuilder,然后将每个流转换为字符串并附加到stringbuilder。

或者,创建一个可写的内存流并将每个输入流流式传输到该内存流中,然后将其转换为字符串。

答案 3 :(得分:0)

创建一个循环,为每个文件将文本加载到StringBuilder。然后,在附加每个文件的数据后,在构建器上调用toString()。

相关问题