【android开发-16】android中文件和sharedpreferences数据存储详解

1,文件读写方式的数据存储
下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件:

保存文件:

try {  String data = "这是要保存的数据";  FileOutputStream fos = openFileOutput("myFile", Context.MODE_PRIVATE);  OutputStreamWriter osw = new OutputStreamWriter(fos);  BufferedWriter wr= new BufferedWriter (osw);  wr.write(data );wr.close();
} catch (Exception e) {  e.printStackTrace();  
}

在这个例子中,我们使用openFileOutput方法来打开一个文件输出流。我们传递两个参数给这个方法:文件名和模式。模式可以是Context.MODE_PRIVATE(默认),Context.MODE_WORLD_READABLE或Context.MODE_WORLD_WRITABLE。

读取文件:

try {  FileInputStream fis = openFileInput("myFile");  InputStreamReader isr = new InputStreamReader(fis);  BufferedReader br = new BufferedReader(isr);  String line;  while ((line = br.readLine()) != null) {  Log.e("DATA", line);  }  fis.close();  
} catch (Exception e) {  e.printStackTrace();  
}

在这个例子中,我们使用openFileInput方法来打开一个文件输入流。然后,我们创建一个InputStreamReader和一个BufferedReader来读取文件的内容。最后,我们使用readLine方法来逐行读取文件的内容。

注意:文件都是默认存储到/data/data/package name/files/目录下。

注意:在Android 10(API级别29)及更高版本中,对于内部存储,Google开始限制可以访问的数据。你可能需要考虑使用其他策略,如使用外部存储或使用SQLite数据库。

2,sharedpreferences方式读写数据

在Android中,SharedPreferences是一个轻量级存储类,主要用于保存一些基本类型的数据,如String,Int,Boolean等。它提供了简单的读写接口,允许开发人员存储和获取数据。以下是如何使用SharedPreferences来读写数据的示例代码:

写入数据:

SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  
SharedPreferences.Editor editor = sharedPreferences.edit();  // 存储一个字符串  
editor.putString("key1", "value1");  
// 存储一个整数  
editor.putInt("key2", 123);  
// 存储一个布尔值  
editor.putBoolean("key3", true);  // 提交编辑  
editor.commit();

读取数据

SharedPreferences sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  // 读取一个字符串  
String value1 = sharedPreferences.getString("key1", "default_value");  
// 读取一个整数  
int value2 = sharedPreferences.getInt("key2", 0);  
// 读取一个布尔值  
boolean value3 = sharedPreferences.getBoolean("key3", false);

注意:getSharedPreferences方法的第一个参数是偏好设置文件的名称,如果该名称不存在,系统将创建一个新的。第二个参数是模式,通常我们使用MODE_PRIVATE或Context.MODE_PRIVATE。如果使用MODE_WORLD_READABLE或Context.MODE_WORLD_READABLE,则从Android 4.2(API级别17)开始已经被废弃。

注意:sharedpreferences是使用键值对的方式存储数据。
默认的存储路径/data/data/package name/shared_pref/目录下。
使用xml的格式来管理数据:
在这里插入图片描述

完整的参考用例代码:
以下是在Android中使用SharedPreferences的完整参考代码用例。这个例子展示了如何使用SharedPreferences来存储和读取用户的偏好设置。

写入数据:

import android.content.SharedPreferences;  
import android.content.SharedPreferences.Editor;  
import android.content.Context;  
import android.preference.PreferenceManager;  public class MyActivity extends Activity {  private SharedPreferences sharedPreferences;  private Editor editor;  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  // 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。  sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  editor = sharedPreferences.edit();  // 存储一个字符串  editor.putString("key1", "value1");  // 存储一个整数  editor.putInt("key2", 123);  // 存储一个布尔值  editor.putBoolean("key3", true);  // 提交编辑,将数据保存到SharedPreferences中。  editor.commit();  }  
}

读取数据:

import android.content.SharedPreferences;  
import android.content.SharedPreferences.Editor;  
import android.preference.PreferenceManager;  
import android.widget.TextView;  public class MyActivity extends Activity {  private SharedPreferences sharedPreferences;  private TextView textView;  @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  textView = findViewById(R.id.textView);  // 获取SharedPreferences对象,使用该应用程序的上下文(this)初始化它。  sharedPreferences = getSharedPreferences("my_preferences", MODE_PRIVATE);  // 读取一个字符串,如果找不到键,则返回默认值"default_value"  String value1 = sharedPreferences.getString("key1", "default_value");  textView.setText("Value of key1: " + value1);  // 读取一个整数,如果找不到键,则返回默认值0  int value2 = sharedPreferences.getInt("key2", 0);  textView.append("\nValue of key2: " + value2);  // 读取一个布尔值,如果找不到键,则返回默认值false  boolean value3 = sharedPreferences.getBoolean("key3", false);  textView.append("\nValue of key3: " + value3);  }  
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203094.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊云科技Serverless视频内容摘要提取方案

概述 随着GenAI的普及,视频内容摘要生成成为一个备受关注的领域。通过将视频内容转化为文本,可以探索到更广泛的应用场景,其中包括: 视频搜索与索引:将视频内容转化为文本形式,可以方便地进行搜索和索引操作…

MATLAB——二维小波的多层重构

%% 学习目标:二维小波的多层重构 %% 案例1 clear all; close all; load woman.mat; Xind2gray(X,map); [C,S]wavedec2(X,3,db4); %二维小波的多层分解 S C(1:38*38)0; %将小波的近似系数设置为0 Ywaverec2(C,S,db4); %二维小波的多层…

Docker+jenkins+gitlab实现持续集成

1.安装环境 服务器ip虚拟机版本192.168.5.132centos7.6192.168.5.152centos7.6 2. 安装docker 安装必要的一些系统工具 yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息,要确保centos7能上外网 yum-config-manager --add-repo http:…

windows如何解决端口冲突(实用篇)

在项目设计中,环境配置成功点击运行瞬间,一大堆红爆出,8080端口占用,这个是很烦人的。。。 解决方式: 笨方法:一、查看所有端口实用情况(挨个扫) 按住【WINR】快捷键打开运行输入…

处理实时视频流:第三方美颜SDK的实时图像处理策略

为了提高用户体验,许多应用和平台开始采用第三方美颜SDK,通过先进的图像处理技术实时改善视频中的面部外观。本文将深入探讨这些第三方美颜SDK在实时视频流处理中所采用的图像处理策略,揭示其背后的技术原理和创新。 一、引言 实时视频流处理…

P6 Linux 系统中的文件类型

目录 前言 ​编辑 01 linux系统查看文件类型 02 普通文件 - 03 目录文件 d 04 字符设备文件 c 和块设备文件 b 05 符号链接文件 l 06 管道文件 p 07 套接字文件 s 总结 前言 🎬 个人…

在cmd下查看当前python的版本

在cmd窗口下运行python --version或者py --version,可以查看当前python的版本。例如:

unity 2d 入门 飞翔小鸟 飞翔脚本(五)

新建c#脚本 using System.Collections; using System.Collections.Generic; using UnityEngine;public class Fly : MonoBehaviour {//获取小鸟(刚体)private Rigidbody2D bird;//速度public float speed;// Start is called before the first frame up…

H5ke13-1浏览器处理异常

window对应的error没有event对象 window对应的error他接收三个参数,msg,url,行号 return false return true 1就不会返回错误 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><title>Title</title>&…

【PyTorch】训练过程可视化

文章目录 1. 训练过程中的可视化1.1. alive_progress1.2. rich.progress 2. 训练结束后的可视化2.1. tensorboardX2.1.1. 安装2.1.2. 使用 1. 训练过程中的可视化 主要是监控训练的进度。 1.1. alive_progress 安装 pip install alive_progress使用 from alive_progress i…

提取B站视频

1、将视频链接粘贴到下面的网站&#xff0c;下载视频到本地。 贝贝BiliBili - B站视频下载 2、使用剪映打开视频&#xff0c;导入视频&#xff0c;导出字幕文件SRT 剪映专业版-全能易用的桌面端剪辑软件-轻而易剪 上演大幕 3、上传SRT文件&#xff0c;解析出来即可 it365 字…

Redis key过期删除机制实现分析

文章目录 前言Redis key过期淘汰机制惰性删除机制定时扫描删除机制 前言 当我们创建Redis key时&#xff0c;可以通过expire命令指定key的过期时间(TTL)&#xff0c;当超过指定的TTL时间后&#xff0c;key将会失效。 那么当key失效后&#xff0c;Redis会立刻将其删除么&#…

设置webstorm和idea符合Alibaba规范

只格式化自己更改的代码 ctrlShiftAltL 插件建议 Alibaba Java Coding Guidelines&#xff08;新版本的idea不支持&#xff0c;有其他同名的非官方版可代替&#xff09;&#xff0c;使用方法在此不赘述 1、设置webstorm 包含 设置两个空格缩进&#xff0c;去掉行尾分号&#…

HarmonyOS/OpenHarmony应用开发-Stage模型应用/组件级配置

在开发应用时&#xff0c;需要配置应用的一些标签&#xff0c;例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。图标和标签通常一起配置&#xff0c;可以分为应用图标、应用标签和入口图标、入口标签&#xff0c;分别对应app.json5配置文件…

Xcode15 Library ‘iconv.2.4.0‘ not found

Xcode 15运行老代码报错&#xff1a;Library iconv.2.4.0 not found 解决&#xff1a; TARGETS-->Bulid Phases --> Link Binary With Libraries 添加一个“Libiconv.tbd”, 同时把原来的 “libiconv.2.4.0.tbd”删除&#xff08;一定要删除&#xff0c;不然运行还是…

「X」Embedding in NLP|Token 和 N-Gram、Bag-of-Words 模型释义

ChatGPT&#xff08;GPT-3.5&#xff09;和其他大型语言模型&#xff08;Pi、Claude、Bard 等&#xff09;凭何火爆全球&#xff1f;这些语言模型的运作原理是什么&#xff1f;为什么它们在所训练的任务上表现如此出色&#xff1f; 虽然没有人可以给出完整的答案&#xff0c;但…

案例059:基于微信小程序的在线投稿系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

uniapp 设置内容超长时的省略样式

需求 在uniapp中&#xff0c;页面在展示搜索历史的时候&#xff0c;需要对内容过长的进行处理&#xff0c;也就是文本超出我的最大长度时&#xff0c;不允许换行&#xff0c;且末尾为省略 期望的效果如下 思路 使用 官网 text-overflow 可选值俩个 clip 修建文本ellipsi…

PyLMKit(6):大模型使用(API型和本地开源模型)

日期&#xff1a;2023-12-6 PyLMKit目前集成了LLM模型有两种类型&#xff1a; API付费调用型本地开源模型下载部署 1.API型LLM模型使用教程 1.1.申请 API KEY 根据你想使用的大模型的官网&#xff0c;注册账号&#xff0c;并申请API KEY&#xff0c;如果需要付费调用&…

PyTorch机器学习与深度学习实践技术应用

近年来&#xff0c;随着AlphaGo、无人驾驶汽车、医学影像智慧辅助诊疗、ImageNet竞赛等热点事件的发生&#xff0c;人工智能迎来了新一轮的发展浪潮。尤其是深度学习技术&#xff0c;在许多行业都取得了颠覆性的成果。另外&#xff0c;近年来&#xff0c;Pytorch深度学习框架受…