安卓xml存储读取和sharedpreferences文件存储读取

起因今天有人问到我 xml文件存储读取和sharedpreferences读写该咋做,能不能帮忙写个案例,这里我简单写出一个案例,一下是全部的代码

一、首先引入

权限

XML 复制代码
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

二、下面是Activity

java 复制代码
import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

public class MainActivity extends AppCompatActivity {
    private EditText ed_name;//名字
    private EditText ed_school_degree;//学号
    private EditText ed_age;//年龄
    private EditText ed_gender;//性别
    private EditText ed_face;//政治面貌
    private EditText ed_address;//家庭住址

    private Button btn_save_xml;//保存到xml
    private Button btn_read_xml;//从xml读取
    private Button btn_save_sharedpreferences;//保存到SharedPreferences
    private Button btn_read_sharedpreferences;//从SharedPreferences读取

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ed_name = findViewById(R.id.ed_name);
        ed_school_degree = findViewById(R.id.ed_school_degree);
        ed_age = findViewById(R.id.ed_age);
        ed_gender = findViewById(R.id.ed_gender);
        ed_face = findViewById(R.id.ed_face);
        ed_address = findViewById(R.id.ed_address);

        btn_save_xml = findViewById(R.id.btn_save_xml);
        btn_read_xml = findViewById(R.id.btn_read_xml);
//        xml文件存储读取
        btn_save_xml.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = ed_name.getText().toString();
                String school_degree = ed_school_degree.getText().toString();
                String age = ed_age.getText().toString();
                String gender = ed_gender.getText().toString();
                String face = ed_face.getText().toString();
                String address = ed_address.getText().toString();

                if (TextUtils.isEmpty(name)) {
                    showToast("请输入姓名");
                    return;
                }
                if (TextUtils.isEmpty(school_degree)) {
                    showToast("请输入学号");
                    return;
                }
                if (TextUtils.isEmpty(age)) {
                    showToast("请输入年龄");
                    return;
                }
                if (TextUtils.isEmpty(gender)) {
                    showToast("请输入性别");
                    return;
                }
                if (TextUtils.isEmpty(face)) {
                    showToast("请输入政治面貌");
                    return;
                }
                if (TextUtils.isEmpty(address)) {
                    showToast("请输入家庭住址");
                    return;
                }

                // 创建一个 DocumentBuilder 对象
                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                DocumentBuilder builder;
                try {
                    builder = factory.newDocumentBuilder();
                    Document doc = builder.newDocument();

                    // 创建根元素
                    Element rootElement = doc.createElement("student");
                    doc.appendChild(rootElement);

                    // 创建子元素并设置文本内容
                    Element nameElement = doc.createElement("name");
                    nameElement.appendChild(doc.createTextNode(name));
                    rootElement.appendChild(nameElement);

                    Element schoolDegreeElement = doc.createElement("school_degree");
                    schoolDegreeElement.appendChild(doc.createTextNode(school_degree));
                    rootElement.appendChild(schoolDegreeElement);

                    Element ageElement = doc.createElement("age");
                    ageElement.appendChild(doc.createTextNode(age));
                    rootElement.appendChild(ageElement);

                    Element genderElement = doc.createElement("gender");
                    genderElement.appendChild(doc.createTextNode(gender));
                    rootElement.appendChild(genderElement);

                    Element faceElement = doc.createElement("face");
                    faceElement.appendChild(doc.createTextNode(face));
                    rootElement.appendChild(faceElement);

                    Element addressElement = doc.createElement("address");
                    addressElement.appendChild(doc.createTextNode(address));
                    rootElement.appendChild(addressElement);

                    // 将文档写入 XML 文件
                    TransformerFactory transformerFactory = TransformerFactory.newInstance();
                    Transformer transformer = transformerFactory.newTransformer();
                    DOMSource source = new DOMSource(doc);
                    StreamResult result = new StreamResult(new File(getFilesDir(), "student_info.xml"));
                    transformer.transform(source, result);

                    showToast("学生信息已保存到 XML 文件");

                } catch (ParserConfigurationException | TransformerException e) {
                    e.printStackTrace();
                    showToast("保存失败:" + e.getMessage());
                }
            }
        });
        btn_read_xml.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    // 创建一个 DocumentBuilder 对象
                    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
                    DocumentBuilder builder = factory.newDocumentBuilder();

                    // 从文件中读取 XML 数据
                    File xmlFile = new File(getFilesDir(), "student_info.xml");
                    Document doc = builder.parse(xmlFile);

                    // 获取根元素
                    Element rootElement = doc.getDocumentElement();

                    // 获取子元素并读取其文本内容
                    String name = rootElement.getElementsByTagName("name").item(0).getTextContent();
                    String school_degree = rootElement.getElementsByTagName("school_degree").item(0).getTextContent();
                    String age = rootElement.getElementsByTagName("age").item(0).getTextContent();
                    String gender = rootElement.getElementsByTagName("gender").item(0).getTextContent();
                    String face = rootElement.getElementsByTagName("face").item(0).getTextContent();
                    String address = rootElement.getElementsByTagName("address").item(0).getTextContent();

                    // 显示读取的数据,您可以根据需要修改此部分
                    showToast("姓名: " + name + "\n" +
                            "学号: " + school_degree + "\n" +
                            "年龄: " + age + "\n" +
                            "性别: " + gender + "\n" +
                            "政治面貌: " + face + "\n" +
                            "家庭住址: " + address);

                } catch (ParserConfigurationException | SAXException | IOException e) {
                    e.printStackTrace();
                    showToast("读取失败:" + e.getMessage());
                }
            }
        });

        btn_save_sharedpreferences = findViewById(R.id.btn_save_sharedpreferences);
        btn_read_sharedpreferences = findViewById(R.id.btn_read_sharedpreferences);
//        sharedpreferences文件存储读取
        btn_save_sharedpreferences.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String name = ed_name.getText().toString();
                String school_degree = ed_school_degree.getText().toString();
                String age = ed_age.getText().toString();
                String gender = ed_gender.getText().toString();
                String face = ed_face.getText().toString();
                String address = ed_address.getText().toString();
                if (TextUtils.isEmpty(name)){
                    showToast("请输入姓名");
                    return;
                }
                if (TextUtils.isEmpty(school_degree)){
                    showToast("请输入学号");
                    return;
                }
                if (TextUtils.isEmpty(age)){
                    showToast("请输入年龄");
                    return;
                }if (TextUtils.isEmpty(gender)){
                    showToast("请输入性别");
                    return;
                }if (TextUtils.isEmpty(face)){
                    showToast("请输入政治面貌");
                    return;
                }if (TextUtils.isEmpty(address)){
                    showToast("请输入家庭住址");
                    return;
                }

                // 使用 SharedPreferences 保存数据
                SharedPreferences sharedPreferences = getSharedPreferences("student_info", Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPreferences.edit();
                editor.putString("name", name);
                editor.putString("school_degree", school_degree);
                editor.putString("age", age);
                editor.putString("gender", gender);
                editor.putString("face", face);
                editor.putString("address", address);
                editor.apply();

                showToast("学生信息已保存到 SharedPreferences");

            }
        });
        btn_read_sharedpreferences.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 从 SharedPreferences 中读取学生信息
                SharedPreferences sharedPreferences = getSharedPreferences("student_info", Context.MODE_PRIVATE);
                String name = sharedPreferences.getString("name", "");
                String school_degree = sharedPreferences.getString("school_degree", "");
                String age = sharedPreferences.getString("age", "");
                String gender = sharedPreferences.getString("gender", "");
                String face = sharedPreferences.getString("face", "");
                String address = sharedPreferences.getString("address", "");

                // 显示读取的数据,您可以根据需要修改此部分
                showToast("姓名: " + name + "\n" +
                        "学号: " + school_degree + "\n" +
                        "年龄: " + age + "\n" +
                        "性别: " + gender + "\n" +
                        "政治面貌: " + face + "\n" +
                        "家庭住址: " + address);
            }


        });
    }

    private void  showToast(String msg){
        Toast.makeText(this,msg,Toast.LENGTH_SHORT).show();
    }
}

最后是activity_main.xml

XML 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_height="60dp">

        <TextView
            android:layout_width="0dp"
            android:text="姓名:"
            android:gravity="center"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <EditText
            android:id="@+id/ed_name"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="请输入名字"
            android:maxLines="1"
            android:lines="1"
            android:layout_weight="4"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_height="60dp">

        <TextView
            android:layout_width="0dp"
            android:text="姓名:"
            android:gravity="center"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <EditText
            android:id="@+id/ed_school_degree"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="请输入学号"
            android:maxLines="1"
            android:lines="1"
            android:layout_weight="4"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_height="60dp">

        <TextView
            android:layout_width="0dp"
            android:text="年龄:"
            android:gravity="center"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <EditText
            android:id="@+id/ed_age"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="请输入年龄"
            android:maxLines="1"
            android:inputType="number"
            android:lines="1"
            android:layout_weight="4"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_height="60dp">

        <TextView
            android:layout_width="0dp"
            android:text="性别:"
            android:gravity="center"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <EditText
            android:id="@+id/ed_gender"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="请输入性别"
            android:maxLines="1"
            android:lines="1"
            android:layout_weight="4"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_height="60dp">

        <TextView
            android:layout_width="0dp"
            android:text="政治面貌:"
            android:gravity="center"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <EditText
            android:id="@+id/ed_face"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="请输入政治面貌"
            android:maxLines="1"
            android:lines="1"
            android:layout_weight="4"/>
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:layout_marginTop="10dp"
        android:layout_height="60dp">

        <TextView
            android:layout_width="0dp"
            android:text="家庭住址:"
            android:gravity="center"
            android:layout_weight="1"
            android:layout_height="match_parent"/>

        <EditText
            android:id="@+id/ed_address"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:hint="请输入家庭住址"
            android:maxLines="1"
            android:lines="1"
            android:layout_weight="4"/>
    </LinearLayout>
   <LinearLayout
       android:layout_width="match_parent"
       android:orientation="vertical"
       android:layout_marginLeft="16dp"
       android:layout_marginTop="16dp"
       android:layout_marginRight="16dp"
       android:layout_height="wrap_content">
       <Button
           android:id="@+id/btn_save_xml"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:text="保存到xml"/>
       <Button
           android:id="@+id/btn_read_xml"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_marginTop="10dp"
           android:text="从xml读取"/>

       <Button
           android:id="@+id/btn_save_sharedpreferences"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_marginTop="10dp"
           android:text="保存到SharedPreferences"/>

       <Button
           android:id="@+id/btn_read_sharedpreferences"
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:layout_marginTop="10dp"
           android:text="从SharedPreferences读取"/>
   </LinearLayout>
</LinearLayout>

效果图

相关推荐
顾北川_野13 分钟前
Android CALL关于电话音频和紧急电话设置和获取
android·音视频
&岁月不待人&24 分钟前
Kotlin by lazy和lateinit的使用及区别
android·开发语言·kotlin
Winston Wood2 小时前
Android Parcelable和Serializable的区别与联系
android·序列化
清风徐来辽2 小时前
Android 项目模型配置管理
android
帅得不敢出门3 小时前
Gradle命令编译Android Studio工程项目并签名
android·ide·android studio·gradlew
problc3 小时前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
帅得不敢出门14 小时前
安卓设备adb执行AT指令控制电话卡
android·adb·sim卡·at指令·电话卡
我又来搬代码了15 小时前
【Android】使用productFlavors构建多个变体
android
德育处主任17 小时前
Mac和安卓手机互传文件(ADB)
android·macos
芦半山17 小时前
Android“引用们”的底层原理
android·java