[在Java中使用InputStreamReader类时字符丢失

问题描述 投票:0回答:1

我写了一些代码,逐个字符地从一个文本文件char中读取,然后将其打印到屏幕上,但是结果使我感到困惑,在这里:

这是我编写的代码

import java.io.*;
import java.nio.charset.StandardCharsets;
public class learnIO
{


        public static void main(String[] args) throws IOException{

                var in = new InputStreamReader(new FileInputStream("test1.txt"), StandardCharsets.UTF_8);
                while(in.read() != -1){

                        System.out.println((char)in.read());
                }


        }


}

文件的内容和编码方案:

文件test1.txt

test1.txt:ASCII文本

cat test1.txt

你好,世界!

结果是:

e

l

w

r

d

一些字符不见了,为什么会这样?

java string input io stream
1个回答
0
投票

InputStreamReader的读取方法的返回类型为int,它占用4个字节并且char类型为2个字节,因此将int转换为char可以跳过2个字节

参考https://docs.oracle.com/javase/7/docs/api/java/io/InputStreamReader.html

© www.soinside.com 2019 - 2024. All rights reserved.