gpt4 book ai didi

java - java中同时使用InputStream和InputStreamReader

转载 作者:行者123 更新时间:2023-11-30 03:01:39 27 4
gpt4 key购买 nike

我从一个文件创建了一个InputStream对象,并从中创建了一个InputStreamReader。

InputStream ips = new FileInputStream("c:\\data\\input.txt");
InputStreamReader isr = new InputStreamReader(ips);

我基本上会以字节的形式将数据读取到缓冲区,但是当我应该读取字符时,我会“切换模式”并使用InputStreamReader读取

byte[] bbuffer = new byte[20];
char[] cbuffer = new char[20];

while(ips.read(buffer, 0, 20)!=-1){
doSomethingWithbBuffer(bbuffer);
// check every 20th byte and if it is 0 start reading as char
if(bbuffer[20] == 0){
while(isr.read(cbuffer, 0, 20)!=-1){
doSomethingWithcBuffer(cbuffer);
// check every 20th char if its # return to reading as byte
if(cbuffer[20] == '#'){
break;
}
}
}
}

这是读取混合字符和字节数据的文件的安全方法吗?

最佳答案

不,这不安全。 InputStreamReader 可能会从底层流(它使用内部缓冲区)读取“太多”数据,并破坏您从底层字节流读取的尝试。如果你想混合读取字符和字节,你可以使用类似 DataInputStream 的东西。

或者,只需将数据作为字节读取,并使用正确的字符编码将这些字节转换为字符/字符串。

关于java - java中同时使用InputStream和InputStreamReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35801037/

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