赞
踩
起因今天有人问到我 xml文件存储读取和sharedpreferences读写该咋做,能不能帮忙写个案例,这里我简单写出一个案例,一下是全部的代码
一、首先引入
权限
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
二、下面是Activity
-
-
- 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 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>
效果图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。