使用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时,它都会重写旧数据。

要修复此问题,请找到您创建urlpatterns = [ path('test/<int:pk>/<str:slug>/',views.single_post,name ='post_detail'),path('commented/',views.addcomment,name='addcomment'),] 的位置

FileOutputStream

,并将布尔值设置为FileOutputStream(File file,boolean append) 。这样,您写入的数据将被附加到文件的末尾,而不是覆盖已经存在的数据。