数据存储--------详解持久化技术

2023-10-19 22:32

本文主要是介绍数据存储--------详解持久化技术,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文件存储

       方法存储是Android最基本的一种数据存储方式下面就给大家承上代码:

       

package com.example.liangshaoteng.fileoutputstream;import android.content.Context;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;public class MainActivity extends AppCompatActivity {private BufferedWriter bufferedWriter;private EditText editText;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText = (EditText) findViewById(R.id.et_text);}private void load() {try {//从代码的openFileInput我们就能看出是:打开文件从里面输入到什么地方FileInputStream data = openFileInput("dataSave");StringBuffer stringBuffer = new StringBuffer();//缓冲区读取BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(data));String line = "";//一行一行的读取while ((line = bufferedReader.readLine()) != null) {stringBuffer.append(line);}//通过StringBuffer追加到一起Toast出来Toast.makeText(getApplicationContext(), stringBuffer.toString(), Toast.LENGTH_LONG).show();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}private void save(String inputText) {if (inputText.isEmpty()) return;try {//从代码的openFileOutput我们就能看出是:打开文件从外面放东西//第一个参数是:文件的名称 第二个参数是:存储的模式//存储模式 ://Context.MODE_PRIVATE:别的应用不能访问得到SharedPreferences对象//Context.MODE_WORLD_READABLE:别的应用可以访问,并且是可以读取SharedPreferences中的数据,但不能写入数据//Context.MODE_WORLD_WRITEABLE:别的应用可以访问,可以在SharedPreferences中写入修改数据FileOutputStream dataSave = openFileOutput("dataSave", Context.MODE_PRIVATE);//在放东西的期间是需要一个缓冲BufferedWriterbufferedWriter = new BufferedWriter(new OutputStreamWriter(dataSave));//然后通过缓冲写入数据bufferedWriter.write(inputText);} catch (IOException e) {e.printStackTrace();} finally {Toast.makeText(getApplicationContext(), "保存成功!", Toast.LENGTH_LONG).show();if (bufferedWriter != null) {try {//不要忘记用完要关闭bufferedWriter.close();} catch (IOException e) {e.printStackTrace();}}}}public void commit(View view) {String trim = editText.getText().toString().trim();if (trim.isEmpty()) return;save(trim);}public void input(View view) {load();}
}



下面就是ShardPreference这一个非常简单所以我就不再详细的讲解了后续呢我将给出工具类大家可以下载直接拿来用

 大家先看一下工具类ShardPreference

 

package com.waywings.fm.utils;import android.content.Context;
import android.content.SharedPreferences;public class ShareUtil {public static String CONFIG = "config";public static String FCONFIG = "fmconfig";public static String INTFIG = "intconfig";private static SharedPreferences sharedPreferences;public static void saveFloatData(Context context, String key, Float value) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences(FCONFIG, Context.MODE_PRIVATE);}sharedPreferences.edit().putFloat(key, value).commit();}public static Float getFloatData(Context context, String key, Float defValue) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences(FCONFIG, Context.MODE_PRIVATE);}return sharedPreferences.getFloat(key, defValue);}public static void saveStringData(Context context, String key, String value) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences(CONFIG, Context.MODE_PRIVATE);}sharedPreferences.edit().putString(key, value).commit();}public static String getStringData(Context context, String key, String defValue) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences(CONFIG, Context.MODE_PRIVATE);}return sharedPreferences.getString(key, defValue);}public static int getIntData(Context context, String key, int defValue) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences(INTFIG, Context.MODE_PRIVATE);}return sharedPreferences.getInt(key, defValue);}public static void savaIntData(Context context, String key, int value) {if (sharedPreferences == null) {sharedPreferences = context.getSharedPreferences(INTFIG, Context.MODE_PRIVATE);}sharedPreferences.edit().putInt(key, value).commit();}
}

不足之处还望大家指出 !

Sqlite存储 : 请大家移步到我的另一篇文章 :点击打开链接

后续给大家提供的工具类的下载 :   工具类下载

这篇关于数据存储--------详解持久化技术的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/242791

相关文章

Java中有什么工具可以进行代码反编译详解

《Java中有什么工具可以进行代码反编译详解》:本文主要介绍Java中有什么工具可以进行代码反编译的相关资,料,包括JD-GUI、CFR、Procyon、Fernflower、Javap、Byte... 目录1.JD-GUI2.CFR3.Procyon Decompiler4.Fernflower5.Jav

golang panic 函数用法示例详解

《golangpanic函数用法示例详解》在Go语言中,panic用于触发不可恢复的错误,终止函数执行并逐层向上触发defer,最终若未被recover捕获,程序会崩溃,recover用于在def... 目录1. panic 的作用2. 基本用法3. recover 的使用规则4. 错误处理建议5. 常见错

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

一文详解如何在Python中使用Requests库

《一文详解如何在Python中使用Requests库》:本文主要介绍如何在Python中使用Requests库的相关资料,Requests库是Python中常用的第三方库,用于简化HTTP请求的发... 目录前言1. 安装Requests库2. 发起GET请求3. 发送带有查询参数的GET请求4. 发起PO

Python进行PDF文件拆分的示例详解

《Python进行PDF文件拆分的示例详解》在日常生活中,我们常常会遇到大型的PDF文件,难以发送,将PDF拆分成多个小文件是一个实用的解决方案,下面我们就来看看如何使用Python实现PDF文件拆分... 目录使用工具将PDF按页数拆分将PDF的每一页拆分为单独的文件将PDF按指定页数拆分根据页码范围拆分

Java中的Cursor使用详解

《Java中的Cursor使用详解》本文介绍了Java中的Cursor接口及其在大数据集处理中的优势,包括逐行读取、分页处理、流控制、动态改变查询、并发控制和减少网络流量等,感兴趣的朋友一起看看吧... 最近看代码,有一段代码涉及到Cursor,感觉写法挺有意思的。注意是Cursor,而不是Consumer

javaScript在表单提交时获取表单数据的示例代码

《javaScript在表单提交时获取表单数据的示例代码》本文介绍了五种在JavaScript中获取表单数据的方法:使用FormData对象、手动提取表单数据、使用querySelector获取单个字... 方法 1:使用 FormData 对象FormData 是一个方便的内置对象,用于获取表单中的键值

SpringBoot项目注入 traceId 追踪整个请求的日志链路(过程详解)

《SpringBoot项目注入traceId追踪整个请求的日志链路(过程详解)》本文介绍了如何在单体SpringBoot项目中通过手动实现过滤器或拦截器来注入traceId,以追踪整个请求的日志链... SpringBoot项目注入 traceId 来追踪整个请求的日志链路,有了 traceId, 我们在排

HTML5中下拉框<select>标签的属性和样式详解

《HTML5中下拉框<select>标签的属性和样式详解》在HTML5中,下拉框(select标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中选择值的方式,本文将深入探讨select标签的... 在html5中,下拉框(<select>标签)作为表单的重要组成部分,为用户提供了一个从预定义选项中

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.