java InputStream类中read()方法的返回的问题

2024-12-02 17:21:57
推荐回答(4个)
回答1:

read方法是读取的字节流,也就是每次只能读取一个字节,如果是汉字的话,肯定会出现乱码,此时必须用readline方法来整行读取,大大的提高了读取效率。
可以通过BufferedReader 流的形式进行流缓存,之后通过readLine方法获取到缓存的内容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此时获取到的bre就是整个文件的缓存流
while ((str = bre.readLine())!= null) // 判断最后一行不存在,为空结束循环
{
System.out.println(str);//原样输出读到的内容
};
备注: 流用完之后必须close掉,如上面的就应该是:bre.close(),否则bre流会一直存在,直到程序运行结束。

回答2:

楼上没错,后面两个分别是“回车符+星号”和“换行符+星号”,原因是in.read(),每次只读取一个字符,而回车其实是'\r\n'两个字符组成的,所以in读取了两次,你可以继续输入回车键,你会发现每输入一次,就会多出两行,并且每行有一个*。

回答3:

你是在windows下做的程序吧,后面两个分别是“回车符+星号”和“换行符+星号”

回答4:

回车分解成两个字符并被输出成空