首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SequenceInputStream中每一个新流的新行

SequenceInputStream中每一个新流的新行
EN

Stack Overflow用户
提问于 2017-07-21 14:38:11
回答 2查看 982关注 0票数 3

我有两个文件,test-1.text (内容是Data from test-1)和test-2.text (内容是Data from test-2)。

当我使用SequenceInputStream从两个流读取时,输出要么以一条直线的形式出现,比如Data from test-1Data from test-2,要么每个字符都在新的行上。

如何开始在新行中从第二个流中打印内容?

代码语言:javascript
复制
public class SequenceIStream {

public static void main(String[] args) throws IOException {
    FileInputStream fi1 = new FileInputStream("resources/test-1.text");
    FileInputStream fi2 = new FileInputStream("resources/test-2.text");

    SequenceInputStream seq = new SequenceInputStream(fi1, fi2);

    int i= 0;

    while((i = seq.read())!=-1)
        System.out.print((char)i);
}

}

输出是

Data from test-1Data from test-2

期望输出

Data from test-1

Data from test-2

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-21 14:44:34

这个响应基于this helpful SO answer,它提供了一种从流集合创建SequenceInputStream的方法。这里的基本思想是,您已经有两个流,它们提供您想要的输出。您只需要一个行中断,更具体地说,一个生成行中断的流。我们可以简单地从换行符的字节中创建一个ByteArrayInputStream,然后将它夹在您已经拥有的文件流之间。

代码语言:javascript
复制
FileInputStream fi1 = new FileInputStream("resources/test-1.text");
FileInputStream fi2 = new FileInputStream("resources/test-2.text");

String newLine = "\n";
List<InputStream> streams = Arrays.asList(
    fi1,
    new ByteArrayInputStream(newLine.getBytes()),
    fi2);
InputStream seq = new SequenceInputStream(Collections.enumeration(streams));

int i= 0;

while((i = seq.read())!=-1)
    System.out.print((char)i);
票数 5
EN

Stack Overflow用户

发布于 2017-07-21 14:44:07

SequenceInputStream不支持此选项。修复此列表以向文件test-1.text ( content:Data from test-1\n)的内容添加换行符('\n')的唯一方法

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45240421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档