You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 04:12:43