Android数据存储之文件存储

数据存储之——Android文件存储系统及文件系统(Android Q) Android存储系统及存储的挂载 Android是基于Linux内核开发的,所以它的文件系统也是跟Linux文件系统类似。 首先我们来看Android存储的分类。 内部存储和外部存储、内置SD卡和外置SD卡 一般的Android手机都有2个存储卡,一个内置到手机里的,不可更换,叫做内置存储卡;另外一个可以通过扩展卡槽添加一个SD卡,叫做外置SD卡。内置存储卡和外置SD卡,它们是从物理上来进行区分的,一个内置到设备,另一个是添加的扩展卡。 对于Android系统来说,存储只分为内部存储和外部存储两类。内部 阅读详情
首先给大家介绍使用文件如何对数据进行存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的。

public void save()
{
try {
FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE_WORLD_READABLE);
outStream.write(text.getText().toString().getBytes());
outStream.close();
Toast.makeText(MyActivity.this,"Saved",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
return;
}
catch (IOException e){
return ;
}
}



openFileOutput()方法的第一参数用于指定文件名称,不能包含路径分隔符“/” ,如果文件不存在,Android 会自动创建它。创建的文件保存在/data/data/<package name>/files目录,如: /data/data/cn.itcast.action/files/itcast.txt ,通过点击Eclipse菜单“Window”-“Show View”-“Other”,在对话窗口中展开android文件夹,选择下面的File Explorer视图,然后在File Explorer视图中展开/data/data/<package name>/files目录就可以看到该文件。
openFileOutput()方法的第二参数用于指定操作模式,有四种模式,分别为: Context.MODE_PRIVATE = 0
Context.MODE_APPEND = 32768
Context.MODE_WORLD_READABLE = 1
Context.MODE_WORLD_WRITEABLE = 2
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容,如果想把新写入的内容追加到原文件中。可以使用Context.MODE_APPEND
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件。
Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用来控制其他应用是否有权限读写该文件。
MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
如果希望文件被其他应用读和写,可以传入:
openFileOutput("itcast.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,当应用程序(.apk)在安装时系统就会分配给他一个userid,当该应用要去访问其他资源比如文件的时候,就需要userid匹配。默认情况下,任何应用创建的文件,sharedpreferences,数据库都应该是私有的(位于/data/data/<package name>/files),其他程序无法访问。除非在创建时指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有这样其他程序才能正确访问。


读取文件内容



public void load()
{
try {
FileInputStream inStream=this.openFileInput("a.txt");
ByteArrayOutputStream stream=new ByteArrayOutputStream();
byte[] buffer=new byte[1024];
int length=-1;
while((length=inStream.read(buffer))!=-1) {
stream.write(buffer,0,length);
}
stream.close();
inStream.close();
text.setText(stream.toString());
Toast.makeText(MyActivity.this,"Loaded",Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e){
return ;
}
}



对于私有文件只能被创建该文件的应用访问,如果希望文件能被其他应用读和写,可以在创建文件时,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE权限。
Activity还提供了getCacheDir()和getFilesDir()方法:
getCacheDir()方法用于获取/data/data/<package name>/cache目录
getFilesDir()方法用于获取/data/data/<package name>/files目录



把文件放入SD卡



使用Activity的openFileOutput()方法保存文件,文件是存放在手机空间上,一般手机的存储空间不是很大,存放些小文件还行,如果要存放像视频这样的大文件,是不可行的。对于像视频这样的大文件,我们可以把它存放在SDCard。 SDCard是干什么的?你可以把它看作是移动硬盘或U盘。

在模拟器中使用SDCard,你需要先创建一张SDCard卡(当然不是真的SDCard,只是镜像文件)。创建SDCard可以在Eclipse创建模拟器时随同创建,也可以使用DOS命令进行创建,如下:

在Dos窗口中进入android SDK安装路径的tools目录,输入以下命令创建一张容量为2G的SDCard,文件后缀可以随便取,建议使用.img:

mksdcard 2048M D:\AndroidTool\sdcard.img

在程序中访问SDCard,你需要申请访问SDCard的权限。

在AndroidManifest.xml中加入访问SDCard的权限如下:

<!-- 在SDCard中创建与删除文件权限 -->

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

<!-- 往SDCard写入数据权限 -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>



要往SDCard存放文件,程序必须先判断手机是否装有SDCard,并且可以进行读写。

注意:访问SDCard必须在AndroidManifest.xml中加入访问SDCard的权限

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

File sdCardDir = Environment.getExternalStorageDirectory();//获取SDCard目录

File saveFile = new File(sdCardDir, “a.txt”);

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("test".getBytes());

outStream.close();

}

Environment.getExternalStorageState()方法用于获取SDCard的状态,如果手机装有SDCard,并且可以进行读写,那么方法返回的状态等于Environment.MEDIA_MOUNTED。

Environment.getExternalStorageDirectory()方法用于获取SDCard的目录,当然要获取SDCard的目录,你也可以这样写:

File sdCardDir = new File("/sdcard"); //获取SDCard目录

File saveFile = new File(sdCardDir, "itcast.txt");

//上面两句代码可以合成一句: File saveFile = new File("/sdcard/a.txt");

FileOutputStream outStream = new FileOutputStream(saveFile);

outStream.write("test".getBytes());

outStream.close();




VXWorks6.9 + Workbench3.3 开发环境部署 VxWorks6.9 + Workbench3.3的安装部署,以及简单示例项目的创建、编译和运行 阅读详情

相关推荐

如何设计一个低代码平台

近些年来,低代码发展火热,各种低代码平台如雨后春笋纷纷崛起,这些平台各定位不同,优劣不同,用户的选择空间很大。那么,如果用户想从零开始设计一个低代码平台,该如何做呢?

Jarod_Chou的博客 8256

Android——数据文件保存

创建工具类FileSaveLogin,在该类中实现Login账号和密码的存储与读取功能,使用文件存储的方式,保存与读取账号与密码信息。运行程序,输入账号和密码信息,点击“登录”按钮,实现登录功能。通过线性布局和相对布局来搭建一个用户登录界面,界面可自主设计,但至少需要包括以下控件:1个ImageView控件、2个TextView控件;□验证性 □演示性 □设计性 R。下面的蓝色和红色的字是从data.txt中读取的信息。保存成功是将账号和密码成功存入data.txt中了。

qq_64628470的博客 2362

ROS下UR+Realsense相机进行手眼标定

手眼标定主要是用来确定相机坐标系和机械臂坐标系之间的转换关系,从而实现后续的抓取等任务。

weixin_42157689的博客 7569

Android学习——数据存储之文件存储

将数据存储到文件中并读取数据 1、新建FilePersistenceTest项目,并修改activity_main.xml中的代码,如下:(只加入了EditText,用于输入文本内容,不管输入什么按下back键就丢失,我们要做的是数据被回收之前,将它存储在文件中) 1 <?xml version="1.0" encoding="utf-8"?> 2 <Li...

anjiukonghe77852的博客 138

【医学图像分割网络】之Res U-Net网络PyTorch复现

【医学图像分割网络】之Res U-Net网络PyTorch复现 1.内容 U-Net网络算是医学图像分割领域的开山之作,我接触深度学习到现在大概将近大半年时间,看到了很多基于U-Net网络的变体,后续也会继续和大家一起分享学习。这次分享ResNet+U-Net的一个改进版,ResNet本身就是一个十分优秀的backbone,目前应用仍然十分广泛,我们融合进ResNet后,我们就可以使得U-Net进行迁移学习了。 1.将Resnet作为encoder替换U-Net原始结构 2.U-Net提出时间较早,当时还没

qq_39071739的博客 1万+

无线Mesh组网全攻略:从原理、部署到调优与排障

对于布线困难的大户型、复式楼或园区,传统的无线中继往往面临带宽减半和链路不稳定的问题。无线Mesh网络通过多跳转发与自组织路由,让每个节点无需网线即可协作扩展覆盖,并依靠动态路径选择实现自愈。其核心技术涉及802.11s、HWMP路由协议,以及802.11k/v/r协同的无缝漫游,能有效提升终端切换体验。在实际部署中,设备选型、回程频段规划与布点位置直接决定网络质量。围绕无线Mesh的组网原理、设备选型、配置调优与故障排查,提供一套工程实践参考,帮助用户在复杂环境下构建稳定高效的无缝覆盖。

weixin_34098209的博客 270

Android学习--持久化(一) 文件存储

持久化之 文件存储 这里把Android持久化全都整理一下,这一篇文章先简单的说一下文件的存储,通过下面一个简单的Demo,理解一下这个文件存储,先说说下面Demo的思路: 1、创建EditText,检查本地是否有存储的文件数据,有的话就直接显示,没有就默认创建 2、EditText输入文字,在这个活动销毁之前存储数据 ...

weixin_30707875的博客 129

深入解析Buck开关电源中的死区时间设计及其对系统性能的影响

本文深入解析了Buck开关电源中死区时间的设计原理及其对系统性能的关键影响。死区时间通过防止上下管同时导通来避免穿通电流,确保系统安全。文章详细探讨了其工作机制、设置时的效率与安全权衡,以及不当设置对效率、稳定性和EMI的连锁反应,并提供了基于实测的调试方法与实战案例。

Apple的专栏 1129

android文件存储

说起android的文件存储,最容易想到的是IO操作,的确android的文件存储也是这个原理。android也提供了一些方法用来操作文件,其中分为资源文件和一般文件 1.操作一般文件 此时文件可以存储在SD卡上或其他地方,如果是SD卡上需要注意判断SD卡是否存在,代码为 if(Environment.getExternalStorageState().equals(Environment.

技术成就梦想 1368

YOLOv8改进:在C2F模块中引入RepGhost Bottleneck模块

C2F类是YOLOv8中的C2F模块的实现,它包含一个RepGhostBottleneck模块、一个卷积层和一个批归一化层。通过在C2F模块中引入RepGhost Bottleneck模块,我们可以在保持计算效率的同时提升模型的表达能力。这是因为RepGhost Bottleneck模块通过引入重复的卷积核来扩展模型的感受野,从而增加了模型对不同尺度目标的感知能力。RepGhost Bottleneck是一种用于卷积神经网络的改进模块,它可以在保持计算效率的同时提升模型的表达能力。希望以上内容对你有帮助!

IlgCrystal的博客 1306

2024阅读AOSP源码的正确打开姿势

在Android系统开发中,阅读AOSP(Android Open Source Project)源码是非常重要的环节。然而,如何构建一个优雅的阅读环境却是一个不容忽视的问题。本文将介绍不同工具和方法下阅读AOSP源码的正确姿势,并对比其优缺点。

虎哥LoveDroid 2706

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

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

Deniece_X的博客 1455

FX5U PLC运动控制库安装(PLCopen Motion Control FB参考)

下面我们介绍三菱FX5U PLC的运动控制库PLCopen Motion Control FB的安装。

RXXW_Dor的博客 1523

Android数据存储_安卓开发 本地多媒体文件存储

SharedPreference是Android提供的用来存储一些简单配置信息的一种机制,核心原理是:保存基于XML文件存储的key-value键值对数据。其采用了Map数据结构来存储数据,以键值对的方式存储,可以简单的读取与写入。除了内部存储空间可以存储内容外,在移动设备商,均带有外部存储介质,即外部存储(如SD卡)。总结,以上这些Context提供的关于目录和文件的操作,均是在data/dat/包名及其目录下进行操作的。在外部存储介质中,除了私有目录外,还有一些公共的目录。公共目录的存储路径是。

2501_90265210的博客 920

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

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

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

帅次的博客 6372

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Android数据存储_文件存储

Android数据存储的方式有种,主要有三种...

qq_35698774的博客 991

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Android数据存储技术之文件存储

Android系统主要提供了3种方式用于简单的数据存储:1.文件存储 2.SharedPreference存储 3.数据库存储。其中文件存储是Android最基本的一种数据存储方式,他比较适用于存储一下简单的文本数据或者二进制数据,下面说明一下文件存储的核心内容。 1.将数据存储到文件中 Context类提供了一个openFileOutput()方法,可以用于将数据...

yuncaidaishu的博客 303

安卓数据存储之SharedPreferences储存与文件存储

Android 数据存储方案 SharedPreferences 存储 SharedPreferences采用键值对存储 存储再share_prefs文件夹中 写数据步骤 第一步. 先获取SharedPreferences对象 有三个方法. 1.Context类中的getSharedPreferences()方法 getSharedPreferences两个参数 第一个参数式文件名字,第二个参数式...

qq_43694952的博客 590

【Android -- 数据存储】使用文件存储数据

本篇博文主要介绍第一种方式,通过文件存储数据。

Kevin Learn Android 1448

android中的存储,Android中数据存储——文件存储数据

当一个应用程序在Android中安装后,我们在使用应用的过程中会产生很多的数据,应用都有自己的数据,那么我们应该如何存储数据呢?数据存储方式Android 的数据存储有5种方式:1. SharedPreferences存储数据SharedPreferences数据存储,也叫作xml存储。这是将数据存储“data/data/程序包名/share_prefs”路径下的到xml文件中。相关连接:《And...

weixin_34532234的博客 548

【Android】本地数据存储之文件存储和SharedPreferences

数据存储方式 Android平台提供了五种数据存储的方式: 文件存储:Android提供了openFileInput()和openFileOutput()方法来读取设备上的文件,读取方式和Java中的I/O程序是一样的。 SharedPreferences:可以用来存储简单的配置信息,是用的XML格式将数据存储到设备中。 SQLite数据库:这个是Android自带的一个轻量级数据库。 ContentProvider:Android四大组件之一,主要应用于应用程序之间的数据交换。

qq_45933810的博客 1935

android文件存储教程,Android基础教程数据存储之文件存储

Android基础教程数据存储之文件存储将数据存储到文件中并读取数据1、新建FilePersistenceTest项目,并修改activity_main.xml中的代码,如下:(只加入了EditText,用于输入文本内容,不管输入什么按下back键就丢失,我们要做的是数据被回收之前,将它存储在文件中)android:id="@+id/activity_main"android:layout_wid...

weixin_39731782的博客 178

Android数据存储--文件存储

android平台的数据存储主要有5种方式: 1.文件存储数据; 2.使用SharedPreferences存储数据; 3.SQLite数据库存储数据; 4.使用ContentProvider存储数据; 5.网络存储数据; 这里介绍文件存储: 文件存储方式是一种较常用的方法,在Android中读取/写入文件的方法,与Java中实现I/O的程序是完全一样...

weixin_30640769的博客 147

Android中的数据存储之文件存储、SharedPreferences和Pull解析

Android中的数据存储之文件存储、SharedPreferences和Pull解析一、数据存储的五种方式 文件存储 分手机内部存储、手机外部存储 以IO流形式存放,可存放较大数据 SharedPreferences 本质是一个XML 以Map形式存放简单的配置参数 SQLite 轻量级、跨平台数据库 所有数据都是存放在手机上的单一文件内,占用内存小 ContentProvider 将本应

技术路漫漫 1262

android的java文件存储在哪_Android开发--数据存储之File文件存储

转载来自:http://blog.youkuaiyun.com/ahuier/article/details/10364757,并进行扩充引言:Android开发中的数据存储方式Android提供了5种方式存储数据:1.文件存储数据 [也就是通常说的SD卡中]2. 使用SharedPreferences存储数据 (共享参数)3. SQLite数据库存储数据4. 使用ContentProvider存储数据 ...

weixin_42300525的博客 1371

Android中的数据存储一(文件存储、SharedPreferences存储)

一.文件存储 文件存储不对存储的内容进行处理,适合用于存储一些简单的文本数据或二进制数据。如果要存储较为复杂的文本数据,就要定义一套自己的格式规范。 1.将数据存储到文件中 Context类中有一个 openFileOutput(String name, int mode) 的方法,是用于将数据存储到指定的文件中,它的返回值为 FileOutputStream,其中有两个参数,前者表示文件名...

my优快云1997的博客 390
上一篇: Android中级教程之Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)
下一篇: Android开发EditText属性
轻鸿飘羽
博客等级 码龄16年 124粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值