java - FileReader read() 方法打印不正确。除了 int(ASCII rep) 到 char 之外,我还需要做任何额外的转换吗?

标签 java filereader

尝试将同一程序的 read() 输出打印到控制台,字符丢失或排列困惑。也对不同的文件进行了尝试,遇到了同样的问题。

对于相同类型的代码,字节流类和方法 FileInputStream.read() 工作得非常好,但是这个字符流的结果不同。

import java.io.*;
import java.util.Scanner;
import static java.lang.System.*;

class CSRead1 
{
    public static void main(String[] args) throws IOException
    {
        Scanner input = new Scanner(in);
        out.print("Enter the filename\t>"); 
        String file = input.next();

        try(FileReader fr = new FileReader(file))
        {   while(fr.read() != -1)
            {out.print((char)fr.read());} } //***reading improperly
    }
}

执行时得到这个:

D:\JavaEx\FILE-IO>java CSRead1
Enter the filename      >CSRead1.java
ipr aaui.cne;
{asCRa1aaln.ytm*
pbi ttcvi anSrn[ rs hosIEcpin
{
        cne nu  e cne(n;
        u.rn(Etrteflnm\>)
        tyFlRae r=nwFlRae(ie)
                hl(rra( =-)
        {u.rn(ca)rra()}}/**edn mrpry

}
?

对于包含唯一字符串“Hello”的文本文件

D:\JavaEx\FILE-IO>java CSRead1
Enter the filename      >sample
el?

最佳答案

您在每次迭代中读取两个字符:一个在 while 条件中,一个在循环体中。尝试解决此问题,您的所有代码都会正常工作。

关于java - FileReader read() 方法打印不正确。除了 int(ASCII rep) 到 char 之外,我还需要做任何额外的转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54570282/

相关文章:

java - 我如何创建一个新文件并放入一些用户定义的整数(使用 Scanner 类)然后读取它?

java - JAVA中的FileReader方法read()和read(char[])

java - 逻辑运算符在 SpEL 中未按预期工作

java - 1L serialVersionUID 是什么意思?我什么时候可以使用这个默认值 1L?

java - 将 ActionBar 添加到 Android API 级别 8 应用程序?

Javascript 变量在 onload 函数内没有改变

javascript - 在 JavaScript 中将 CSV 记录解析为对象数组

NetBeans 中的 Java 相对路径

java - 如何创建线程安全的单例类(保存状态)

java - 从 BASH 脚本检查 Java 版本的正确方法