使用 FileOutputStream 在不同的行上写入多个分数

write multiples scores on different lines using FileOutputStream

(API 27, android 8.1) 我是 android 世界的新手,我试图理解为什么输出总是写在 .txt 的同一第一行,即使我每次在文件上写时都使用 lineSeparator。这是我的代码:

 @Override
    public void onClick(View v) {
        String usernameD = username.getText().toString();
        String highscore = "Score: " + scoreT + " - Cards Left: " + cLeftT + " - Username: " + usernameD;
        FileOutputStream fos = null;

        try {
            fos = openFileOutput(FILE_NAME, MODE_PRIVATE);
            String lineSeparator = System.getProperty("line.separator");
            fos.write(lineSeparator.getBytes());
            fos.write(highscore.getBytes());
            fos.flush();

            username.getText().clear();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fos != null){
                try {
                    fos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

每次打开 fileOutputStream 时它都会重写旧数据。

要修复它,请找到您创建的位置 FileOutputStream

FileOutputStream(File file, boolean append) 

并将布尔值设置为 true。这样,您写入的数据将附加到文件末尾,而不是覆盖已经存在的数据。