Android—文件进行数据存储(四中操作模式)

SharedPreferences原理解析 SharedPreferences介绍 SharedPreferences是Android官方的Key-Value键值对形式的轻量级存储方式,能够存储少量的数据,支持基本类型、字符串类型。 文件存储路径是/data/data/应用程序包名/shared_prefs。 SharedPreferences使用 1、创建SharedPreferences SharedPreferences getSharedPreferences(String name, @PreferencesMode int mode); 阅读详情

简介:

    Android进行文件存储主要有四种操作模式

    1》Context.MODE_PRIVATE:默认模式,私有模式只能被本身应用进行访问,其它应用不能进行访问,本身应用访问文件,如果进行操作会对文件进行覆盖。

    2》Context.MODE_APPEND:append模式下对文件访问会自动检查文件是否存在,会追加内容,如果文件不存在则进行创建文件。

    3》MODE_WORLD_WRITEABLE:表示可以被其它应用对data\data\下的文件进行写,但不能进行读。

    4》MODE_WORLD_READABLE:表示可以被其它应用对data\data\下的文件进行读,但不能进行写。

    如何想读写:MODE_WORLD_WRITEABLE+MODE_WORLD_READEABLE


代码来了解四种操作模式:

提取方法:

	private void fileWrite(String content, FileOutputStream fos)
			throws IOException {
		fos.write(content.getBytes());
		fos.close();
	}

工具类:

public class IOUtil {

	public static String read(File file) throws Exception{
		FileInputStream fis=new FileInputStream(file);
		ByteArrayOutputStream outStream=new ByteArrayOutputStream();
		byte[] buff=new byte[1024];
		int len=0;
		while((len=fis.read(buff))!=-1){
			outStream.write(buff, 0, len);
		}
		fis.close();
		outStream.close();
		return new String(outStream.toByteArray());
	}
}


1》我们先了解下Contex.MODE_PRIVATE

		// 私有操作模式,創建出來的文件只能被本應由訪問,其它应由无法访问,写入文件的内容
		// 会覆盖原文件的内容
		FileOutputStream fos = context.openFileOutput(filename,
				Context.MODE_PRIVATE);
		fileWrite(content, fos);
本身应用时可以访问的,其它应用不能访问。

2》Context.MODE_APPEND

File项目下:   
                // 私有操作模式,創建出來的文件只能被本應由訪問,其它应由无法访问,写入文件的内容
		// 会覆盖原文件的内容
		FileOutputStream fos = context.openFileOutput(filename,
				Context.MODE_APPEND);
		fileWrite(content, fos);
Other项目下:
        String path="/data/data/com.example.file/files/Append.txt";
        File file=new File(path);
        String content=IOUtil.read(file);
        Log.i(TAG,content);


抛出异常:java.io.FileNotFoundException:/data/data/com.example.file/files/Append.txt(Permission denied)

很明显权限不够

android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其它资源比如文件的时候,就需要userid匹配.


3》MODE_WORLD_WRITEABLE

File项目下	
        public void testWorld_writeable() throws Exception {
		FileService service = new FileService(this.getContext());
		service.saveWorld_writeable("World_writeable.txt",
				"www.World_writeable.net");
	}


Other项目下	
       public void readWrite() throws Exception {
		String path="/data/data/com.example.file/files/World_writeable.txt";
		File file=new File(path);
		FileOutputStream fos=new FileOutputStream(file);
		fos.write("itcast".getBytes());
		fos.close();
	}

4》MODE_WORLD_READABLE

File项目下	
       public void saveWorld_readable(String filename, String content)
			throws Exception {
		// 私有操作模式,創建出來的文件只能被本應由訪問,其它应由无法访问,写入文件的内容
		// 会覆盖原文件的内容
		FileOutputStream fos = context.openFileOutput(filename,
				Context.MODE_WORLD_READABLE);
		fileWrite(content, fos);
	}

Other项目下
	public void readRead() throws Exception {
		String path="/data/data/com.example.file/files/World_readable.txt";
		File file=new File(path);
		String content=IOUtil.read(file);
		Log.i(TAG,content);
	}


可读可写:

MODE_WORLD_WRITEABLE+MODE_WORLD_READEABLE

File项目下
       public void saveReadAndWrite(String filename, String content)
			throws Exception {
		FileOutputStream fos = context.openFileOutput(filename,
				Context.MODE_WORLD_READABLE+Context.MODE_WORLD_WRITEABLE);
		fileWrite(content, fos);
		
	}

Other项目下	
        public void readWriteRead() throws Exception {
		String path="/data/data/com.example.file/files/writeRead.txt";
		File file=new File(path);
		String content=IOUtil.read(file);
		Log.i(TAG,content);
		FileOutputStream fos=new FileOutputStream(file);
		fos.write("itcast".getBytes());
		fos.close();
	}








Android数据存储:File文件存储 MainActivity.java package com.charein.file; import java.io.ByteArrayOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import android.R.integer; import android.app.Activ 阅读详情

相关推荐

Android 中内部存储和外部存储的理解与应用

一、Android存储分为: 内部存储(Internal Storage)和外部存储(External Storage) 特点: 内部存储:随应用卸载被删除 外部存储: 1.公有目录:存放一些下载的视频文件等,比如还有movies,fictures,music等公有的一些文件目录 2.私有目录:随应用卸载被删除 下面来具体介绍一下内部存储和外部存储的具体路径: 1、内部存储: /data/data/< applicationId >/shared_prefs /data/data/<

路宇的博客 5801

android 对文件的操作模式

[b]Context.MODE_PRIVATE = 0 Context.MODE_APPEND = 32768 Context.MODE_WORLD_READABLE = 1 Context.MODE_WORLD_WRITEABLE = 2[/b] Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写...

奋斗 724

UE5.2 DynamicMesh避坑指南:从蓝图生成到物理碰撞的完整流程

本文详细解析了在UE5.2中使用DynamicMesh组件时,如何正确选择ADynamicMeshActor与AGeneratedDynamicMeshActor,并提供了从蓝图生成、初始化到配置物理碰撞的完整避坑流程。重点解决了SpawnActor失效、碰撞更新等常见问题,帮助开发者高效实现程序化网格生成与动态变形效果。

rrr55的博客 314

Android基础学习(十八)—— 数据存储

Android基础学习

123 1847

磁栅尺的基本原理

一、磁栅尺简介 磁栅尺(Magnetic scale)是一种常见于工业自动化设备领域的线性位移测量方案,因为其耐用性强,对环境要求不高,逐渐替代了对环境要求苛刻的光学直线测量方案。 作为自动化设备领域里不多见的精密位移检测方案,磁栅尺使用广泛,尤其适用于检测行程长、测量精度要求高、工况复杂的大型机床。磁栅尺安装方便,抗干扰能力强,抗冲击性强,不易受到振动、粉尘、水垢、油污等影响,耐高温和耐低温性能也较为突出。 二、磁栅尺基本组成与原理 磁栅尺主要由两个部分组成,磁尺和读磁头。 磁尺 磁尺是磁栅尺

Luckboy_shy的博客 1万+

D2D与C2C高速互联技术对比:从封装到性能的全面解析

本文全面解析了Die-to-Die(D2D)与Chip-to-Chip(C2C)高速互联技术的差异,从封装形式、传输距离到性能指标进行深度对比。D2D技术在带宽、延迟和能效方面具有显著优势,适用于高性能计算和AI加速;而C2C技术则更适合车载电子系统等长距离传输场景。文章还探讨了UCIe标准化趋势,并提供了技术选型的实用建议。

weixin_29197051的博客 560

Context.MODE_PRIVATE

Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND...

baobaoupup 359

大模型越狱指令数据集全解析:从AdvBench到HarmBench

本文全面解析了AdvBench、HarmBench等主流大模型越狱指令数据集。AdvBench作为基础测试集,用于快速评估模型安全基线;HarmBench则以其全面的文本、多模态及对抗性攻击评估,成为当前权威的深度安全审计工具。文章还介绍了MaliciousInstruct、JailbreakBench等特色数据集,并提供了根据实际场景选择与使用这些数据集的具体实战指南。

weixin_29327525的博客 621

基于Android studio学习安卓之数据存储

在移动应用开发中,数据存储是一个非常重要且必不可少的技术。无论是保存用户的信息、记录应用的状态,还是缓存网络请求的数据,数据存储都是必须处理的需求。而在安卓开发中,我们有许多选项可以选择来进行数据存储。下面我们介绍几种安卓的常见的数据存储方式,包括Shared Preferences、数据库存储等。在Android中,SharedPreferences是一种轻量级的存储机制,用于存储和检索键值对数据。它提供了一种简单的方法来保存应用程序的持久化数据,包括用户首选项、设置信息、应用程序状态等。

qq_30665153的博客 3590

48-OpenCVSharp —-Cv2.MatchTemplate() 函数功能(模板匹配)详解

是 OpenCV 中一个常见且简单的模板匹配算法,适用于目标检测和图像识别中的静态场景。它的优点是易于理解和实现,但在面对旋转、尺度变化、复杂背景或光照变化等挑战时,效果可能大打折扣。在这些情况下,结合多尺度图像、特征匹配算法(如 SIFT、SURF、ORB 等)以及深度学习模型可以显著提高匹配的鲁棒性和精度。模板匹配仍然是一个非常基础但强大的工具,适用于一些简单的图像匹配任务。对于更加复杂和动态的图像识别任务,我们通常会使用其他更加复杂的算法或者深度学习模型来处理。

weixin_45590420的博客 4523

RK3568平台(USB篇)USB基础知识

现象:把USB设备比如Android手机接到PC答1:是USB控制器,是USB控制器内嵌的root hub.答2. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序。答3. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;

weixin_49303682的博客 1658

Android安卓——数据存储之文件存储

在安卓中对数据的存储有了SQLite数据库存储数据,在本次学习的是对文件的存储。利用SharedPerences将数据存储在文件中。 实战:本次学习准备的实战是总结性写了一下数据内部存储的读写、文件内部存储的读写、在SD卡中的读写。 一、 简单存储SharedPreferences1、简单存储简介 SharedPreferences是一种轻量级的数据保存方式。 通过SharedPrefer

Deniece_X的博客 1456

Vue2 - 详细实现网页 “开启录音并生成音频文件,上传到服务器效果“,浏览器录制外部音频调用麦克风并传到后端,兼容全部浏览器、支持 PC 网页或手机 H5 网页、可本地播放试听(详细示例运行代码)

vue,nuxt,uniapp,网页网站,麦克风,网页录音,MediaRecorder,浏览器录音,移动端h5网页,手机端录音,web网页录音,recorder-core官方文档,Recorder,非https怎么本地录音,录音报错失败,录音后怎么播放音频,如何获取录音mp3文件,解决一直不提示麦克风权限,小白详细教程,实时录音,调用浏览器麦克风录音,浏览器不兼容,wav,mp3,vue怎么实现网页录音呢,vue2网页录音并上传到服务器,web如何实现录制音频,vue网页录音,音频录制播放和上传服务器,vu

🏆 前端领域优质创作者 6004

【安卓基础6】数据存储

一、共享参数SharedPreferences、共享参数的使用场景、特点、共享参数的用法、二、数据库SQLite、SQLite基本语法、数据库帮助器SQLiteOpenHelper、创建数据库帮助器类、使用数据库帮助器获取数据库实例、数据库版本管理、数据库管理器SQLiteDatabase、获取SQLiteDatabase实例、执行SQL语句、插入数据、查询数据、更新数据、删除数据、事务处理、关闭数据库连接、操作数据库方式-总结、三、存储卡的文件操作、外部存储控件、在存储卡上读写图片文件、四、应用组件App

丨康有为丨的博客 1460

Python 领域 vllm 知识蒸馏的实践经验

知识蒸馏(Knowledge Distillation)是一种将大型、复杂模型(教师模型)的知识转移到小型、高效模型(学生模型)的技术。在大型语言模型(LLM)时代,这项技术变得尤为重要,因为它可以在保持模型性能的同时显著降低计算资源需求。本文专注于在Python生态中使用vLLM(Very Large Language Model)框架实现知识蒸馏的实践经验。vLLM是一个专为大型语言模型设计的高效推理和服务框架,它通过创新的注意力机制和内存管理技术,显著提高了LLM的推理速度。

AI Python 编程之道的博客 777

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android安卓——数据存储之数据库存储

在安卓开发中,对于用户端数据的存储常使用SQLite数据库。 使用SQLite数据库进行数据的增删查改操作。后面附有代码 一、SQLite数据库1、SQLite数据库简介(1)、SQLite数据库是一个开源的嵌入式关系数据库。(2)、特点: 更加适用于嵌入式系统,嵌入到使用它的应用程序中去。 占用非常少的内存,运行高效可靠,可移植性好。

Deniece_X的博客 4468

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

安卓将数据存储到文件的操作

package gpatmobile.tunion.com.mytest; import android.content.Context; import android.text.TextUtils; import android.util.Log; import java.io.ByteArrayOutputStream; import java.io.File; import java....

qq_32329745的博客 1244

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

安卓开发(三)数据存储机制、文件IO、SQLite

文章目录SharedPreferences SharedPreferences

芸兮的博客 1815

Android 数据存储(一)-文件存储

Android系统提供了提供了多种保存应用数据的选项:文件存储(应用程序专属文件存储、共享文件存储)、Preferences、数据库。

帅次的博客 6373

Android常见数据存储方式

学习中

m0_64346512的博客 3038

Android中数据存储

文件存储,SharedPreferences存储,SQLite数据库存储,Litepal,序列化

m0_71214256的博客 2764

(六) 安卓数据存储使用

在安卓应用开发中,数据存储是实现应用功能的重要部分。合理选择和实现数据存储方式,可以提升应用的性能和用户体验。本文将介绍安卓开发中常用的数据存储方法、适用场景、实现方式以及一些实践示例,帮助你全面掌握安卓数据存储技术。掌握安卓数据存储技术是开发高效应用的关键。通过本文的介绍和实践示例,希望你对安卓数据存储方法有一个全面的了解,并在实际开发中灵活应用。持续学习和实践是掌握数据存储技术的关键,祝你在安卓开发的道路上取得成功!

小新的博客 1104

Android中使用SharedPreferences进行数据存储及文件操作模式

很多时候我们开发的软件需要向用户提供软件参数设置功能,例如我们常用的QQ,用户可以设置是否允许陌生人添加自己为好友。对于软件配置参数的保存,如果是window软件通常我们会采用ini文件进行保存,如果是j2se应用,我们会采用properties属性文件进行保存。如果是Android应用,我们最适合采用什么方式保存软件配置参数呢?Android平台给我们提供了一个SharedPreferences

Jason 505

Android数据存储

Android数据存储

蔡林浩的博客 2221

Android数据存储五大方式

在 Android 开发中,数据存储是一个非常重要的部分,用于保存应用的各种数据,如用户信息、配置文件、图片、视频等。根据数据的类型和使用场景,Android 提供了多种数据存储方式。以下是 Android 中常见的五种数据存储方式的详细介绍。SharedPreferences 是 Android 提供的一种轻量级的数据存储方式,适合存储简单的键值对数据(Key-Value),通常用于保存配置信息、用户偏好等。

2501_90212852的博客 2811

安卓开发之数据存储学习

安卓原生的数据存储方式主要有三个: 1是文件存储;2是SharedPreferences存储,在安卓软件分析中经常会看到里面明文存储着用户名与密码;3是SQLite数据库存储 分别存储的位置在/data/data/包名/File、/data/data/包名/SharedPeference、/data/data/包名/SQLite。 文件存储 ...

iris的博客 596
上一篇: Android应用程序开发入门——基础概念
下一篇: Android_数据库的增删改查
linuxMinx
博客等级 码龄15年 195粉丝 79原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值