java - BufferedReader 返回与原始文件不匹配的文件

标签 java file javafx bufferedreader

我正在使用 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);

关于java - BufferedReader 返回与原始文件不匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808965/

相关文章:

Javafx KeyEvent 和 MouseEvent

java - 使用 javafx 媒体类播放 wmv 文件

java - 使用 Google GSON 库对 Java 模型类使用注释

java - ClassNotFoundException : fuseki-server. jar

python - 在 Bash 中,修改文件中的列和行

c# - 使用C#读取文件内容

java - jersey 2.0::for cdi 注入(inject),beans.xml 是必需的吗?

java - 从 Java Soap 客户端使用 .NET Web 服务?

c - 从C语言的文本文件中随机选择一个单词

java - 如何从静态方法打开新窗口 - JavaFX