SequenceInputStream 中每个新流的新行
new line for every new stream in SequenceInputStream
我有两个文件,test-1.text
(内容是Data from test-1
)和test-2.text
(内容是Data from test-2
)。
当我使用SequenceInputStream
从两个流中读取,输出要么像 Data from test-1Data from test-2
这样的一条直线,要么每个字符都在新行上。
如何开始在新行中打印第二个流中的内容?
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
SequenceInputStream 不支持此选项。解决该问题的唯一方法是在文件内容中添加一个换行符 ('\n') test-1.text
(content: Data from test-1\n
)
我的回复基于 this helpful SO answer,它提供了一种从流集合中创建 SequenceInputStream
的方法。这里的基本思想是您已经有两个流可以提供您想要的输出。您只需要一个换行符,更具体地说,一个 stream 会生成一个换行符。我们可以简单地从换行字符串的字节创建一个 ByteArrayInputStream
,然后将其夹在您已有的文件流之间。
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);
我有两个文件,test-1.text
(内容是Data from test-1
)和test-2.text
(内容是Data from test-2
)。
当我使用SequenceInputStream
从两个流中读取,输出要么像 Data from test-1Data from test-2
这样的一条直线,要么每个字符都在新行上。
如何开始在新行中打印第二个流中的内容?
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
SequenceInputStream 不支持此选项。解决该问题的唯一方法是在文件内容中添加一个换行符 ('\n') test-1.text
(content: Data from test-1\n
)
我的回复基于 this helpful SO answer,它提供了一种从流集合中创建 SequenceInputStream
的方法。这里的基本思想是您已经有两个流可以提供您想要的输出。您只需要一个换行符,更具体地说,一个 stream 会生成一个换行符。我们可以简单地从换行字符串的字节创建一个 ByteArrayInputStream
,然后将其夹在您已有的文件流之间。
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);