gpt4 book ai didi

java - 使用 SequenceInputStream 时逐行读取多个文件时出现问题

转载 作者:行者123 更新时间:2023-12-01 18:10:45 34 4
gpt4 key购买 nike

我正在逐行读取多个文件,并发现 SequenceInputStream 很方便。我的使用方法如下:

try (
InputStream in = new SequenceInputStream(new FileInputStream(file1),new FileInputStream(file2));
Scanner reader = new Scanner(source)) {
while ( reader.hasNext ()) {
System.out.println(reader.nextLine());
}
}

但是它有一个特殊的问题。可以这么说:

文件1

a
b

文件2

c
d

然后执行的代码会输出:

a
bc
d

它似乎不区分单独文件中的行,有办法解决这个问题吗? (是的,我确实需要将多个InputStream合并为一个)

最佳答案

SequenceInputStream 隐藏除最后一个文件之外的所有包装文件中的 EOF 字符:

 public int read() throws IOException {
if (in == null) {
return -1;
}
int c = in.read();
if (c == -1) {
nextStream();
return read();
}
return c;
}

因此,如果文件不以新行结尾,则 file2 的第一行将附加到 file1 的最后一行。

如果您确实需要使用单个 inputStream 并且需要使用单独的行来分隔每个文件,您可能必须编写自己的 InputStream 实现来检查是否有换行符作为文件的最后一行,并且如果不,插入一个作为 read() 方法的一部分。

关于java - 使用 SequenceInputStream 时逐行读取多个文件时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33193829/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com