问题描述
(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)
。这样,您写入的数据将被附加到文件的末尾,而不是覆盖已经存在的数据。