Android Studio中Java实现内部存储追加数据(保留原有数据)
Android Java实现内部存储追加数据功能
1. 布局实现(activity_main.xml)
先搭建基础UI,包含输入文本框和“保存数据”按钮:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <EditText android:id="@+id/et_input" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入要保存的数据"/> <Button android:id="@+id/btn_save" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="保存数据" android:layout_marginTop="16dp"/> </LinearLayout>
2. Java逻辑实现(MainActivity.java)
核心是利用MODE_APPEND模式打开文件输出流,实现追加写入不覆盖原有数据:
import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedWriter; import java.io.FileOutputStream; import java.io.OutputStreamWriter; public class MainActivity extends AppCompatActivity { private EditText etInput; private Button btnSave; // 定义内部存储的文件名 private static final String FILE_NAME = "saved_data.txt"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); etInput = findViewById(R.id.et_input); btnSave = findViewById(R.id.btn_save); btnSave.setOnClickListener(v -> { String inputText = etInput.getText().toString().trim(); if (inputText.isEmpty()) { Toast.makeText(MainActivity.this, "请输入要保存的数据", Toast.LENGTH_SHORT).show(); return; } // 调用追加写入方法 appendToFile(inputText); // 清空输入框 etInput.setText(""); }); } /** * 将数据追加写入内部存储文件 * @param content 要保存的内容 */ private void appendToFile(String content) { try (FileOutputStream fos = openFileOutput(FILE_NAME, MODE_APPEND); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos))) { // 写入内容后添加换行,让每条数据单独一行 writer.write(content); writer.newLine(); Toast.makeText(this, "数据保存成功", Toast.LENGTH_SHORT).show(); } catch (Exception e) { e.printStackTrace(); Toast.makeText(this, "数据保存失败", Toast.LENGTH_SHORT).show(); } } }
关键说明
MODE_APPEND模式:这是实现追加写入的核心,使用该模式打开文件时,新内容会追加到文件末尾,不会覆盖原有数据;若文件不存在,系统会自动创建。- 内部存储特性:文件存放在应用私有目录(
/data/data/你的应用包名/files/saved_data.txt),其他应用无法访问,保障数据隐私。 - 换行处理:写入时添加
writer.newLine(),让每条保存的数据单独成行,匹配你期望的展示效果。
如果需要读取已保存的数据展示,可新增读取方法,用openFileInput()打开文件流逐行读取即可。
内容的提问来源于stack exchange,提问作者Mahdi Bagherian
相关产品推荐
相关产品推荐

