BufferedReader returns 与原始文件不匹配的文件

BufferedReader returns file that does not match the original

我正在使用 BufferedReader 读取文件并将每一行存储在 String ArrayList 中。但是,在 运行 BufferedReader、读取文件、存储文件并打印 ArrayList 之后,我得到了与原始文件不同的东西。

我读取文件的代码:

    public File shooterUIFile = new File("./src/com/xyfurion/hudedit/bin/resources/ShooterUI.ini");
    public ArrayList<String> shooterUIRead = new ArrayList<>();
    public ArrayList<String> shooterUIWrote = new ArrayList<>();
    public void readHUDFile(){
        try {
            FileReader fileReader = new FileReader(shooterUIFile);
            BufferedReader bufferedReader = new BufferedReader(fileReader);

            while (bufferedReader.readLine() != null)
                shooterUIRead.add(bufferedReader.readLine());

            for (int i = 0; i < shooterUIRead.size(); i++)
                System.out.println(shooterUIRead.get(i));

            bufferedReader.close();
        }
        catch(FileNotFoundException ex) {
            System.out.println("Unable to open file '" + shooterUIFile + "'");
            ex.printStackTrace();
        }
        catch(IOException ex) {
            System.out.println("Error reading file '" + shooterUIFile + "'");
            ex.printStackTrace();
        }
    }

输出(文件打印):PASTEBIN

原文件:PASTEBIN

您只保留每隔一行,因为您每次迭代调用 readLine 两次并丢弃第一个读取行(while 条件中的行)。

你可以这样避免:

    String line = null;

    while ((line = bufferedReader.readLine()) != null)
        shooterUIRead.add(line);