有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java FileReader方法未返回/打印文件记录中的所有字符

我试图通过FileWriter写入文件,然后通过FileReader读取。FileWriter可以将记录写入文件,但FileReader方法在打印时似乎跳过了字符。我已经在下面粘贴了代码、文件内容和输出。你能帮我找出我遗漏了什么或做错了什么吗

***更新-
刚刚意识到(发布后)while语句中的“read()”可能正在读取print语句中“read()”前面的一个字符,从而导致其他所有字符(从第一个字符开始)跳过print语句。不过我不确定。这就是这里发生的事情吗

代码-

public class FileIOCharClass {
    public static void main(String[] args) {
        File TestChar = new File("C:\\TestChar.txt");
        FileIOCharClass FileIOChar = new FileIOCharClass();
        try {
            FileIOChar.charWriteMethod(TestChar);
        }
        catch (IOException a){
            System.out.println("IO Exception occured in Write method");
        }
        try{
            FileIOChar.charReadMethod(TestChar);
        }
        catch (IOException b){
            System.out.println("IO Exception occured in Read method");
        }
    }

    private void charWriteMethod(File CharFileToWrite) throws IOException {
        FileWriter WriteRoutine = null;
        try{
            WriteRoutine = new FileWriter(CharFileToWrite);
            WriteRoutine.write("Line-1");
            WriteRoutine.write("Line-2");
            WriteRoutine.write("Line-3");
        }finally {
            WriteRoutine.flush();
            WriteRoutine.close();
        }

    }

    private void charReadMethod(File CharFileToRead) throws IOException {
        FileReader ReadRoutine = new FileReader(CharFileToRead);
        while (ReadRoutine.read() != -1){
            System.out.println(((char)ReadRoutine.read()));
        }
    }
}

创建的TestChar文件的内容-

Line-1Line-2Line-3

程序打印输出

i
e
1
i
e
2
i
e
3

Process finished with exit code 0

共 (1) 个答案

  1. # 1 楼答案

    问题是你读了两遍。在while条件中输入一次,在block语句中输入另一次

            while (ReadRoutine.read() != -1){
                System.out.println(((char)ReadRoutine.read()));
            }
    

    相反,您可以尝试:

    int data = ReadRoutine.read();
    while (data != -1) {
        System.out.println((char)data);
        data = ReadRoutine.read();
    }