android数据存储的再学习

麒麟和UOS系统编写桌面点击可执行文件 在桌面上创建一个快捷方式(.desktop 文件)来运行脚本。打开文本编辑器,创建一个新文件,如。这可以通过文本编辑器来完成。首先,确保您的脚本具有执行权限。现在,您应该可以双击桌面上的。保存此文件到桌面目录,例如,在桌面上创建一个快捷方式(文件来运行您的脚本了。使用图形界面或命令行给。现在您可以双击桌面上的。为您脚本的实际路径。是您脚本的实际路径。文件来运行您的脚本了。 阅读详情

服务端的数据存储

1) MySql (Oracle,DB2,Sybase,SQLServer,...,NoSQL(Hbase,mongoDB))

2) File (例如配置文件,xml,properties)

 

客户端的数据存储

1)外部存储(外置SDCARD存储)8个方法

a)目录,大小,状态,特点

b)对象(Environment,Context,StatFs)

 

2)内部存储8个方法

a) 直接存储 (目录,OpenFileInput,OpenFileOutput)

b) 偏好设置 (SharedPreferences,Editor)

c) SQLite存储(SQLiteDatabase,SQLiteOpenHelper

 

3)静态读取

a)assets

b)res/raw

c)res/xml


简单的配置数据用sp偏好设置

结构化的数据使用自带的sqlite数据库

音乐、图片等文件使用内外部存储空间存储文件

联系人 短信等使用ContentProvider进行数据增删改查的操作

重要的业务数据存储在网络服务器

文件存储

内部存储器  和app共生死

外部存储器 所有app的公共绿地中带有自留地(4.4 19以后)


内部存储 8个方法

 

所谓内置sdcard一般指的是系统(linux)默认所在存储空间.

内部存储的数据为应用程序的私有数据(存储在应用程序的私有目录中)在应用卸载时会被一起删除

不用加读写权限  指的是系统内置sdcard中数据的存储(即系统所在的目录)

我们安装一个apk文件时都默认安装在内置存储空间中,当内部存储空间不足时,可以选择外部存储空间

我们在内部存储空间中的数据,应用程序卸载时,此空间的数据也会一同删除

我们不建议在内部存储空间放置大量数据,此空间内容多了可能会影响系统整体运行性能。

 

================================================

 /data/data/应用包名

 方法都是Context类的,所以Activity具有强大的资源访问能力(内部、外部存储都可以)

    context.getDir(String name, int mode)

 按照指定名称来创建或打开已存在的内部存储目录以File对象返回

     /data/data/app包名/app_文件名

    在此目录可以创建任意文件、子目录 访问权限针对整个目录而不能针对单个文件

  

    context.getFilesDir() 创建或打开已存在的内部存储目录以File对象返回

     /data/data/app包名/files           

 

    context.openFileInput(String name) 创建或打开已存在的内部存储的文件字节输入流

    context.openFileOutput(String name, int mode)创建或打开已存在的内部存储的文件字节输出流

     /data/data/app包名/files/目录中

     name是文件名称,不能用文件分隔符“/”,如果文件不存在会自动创建它

       mode操作模式:

        MODE_PRIVATE       默认私有模式  表示该文件只能被该应用程序访问 写入文件会覆盖原来内容

        MODE_APPEND       私有 在原有内容上增加数据

        MODE_WORLD_READABLE  MODE_WORLD_WRITEABLE  允许其他app读写 在17已废弃

    context.getFileStreamPath(String name)

        /data/data/app包名/files/文件名  获得表示 files 目录中一个指定文件的 File 对象

    context.deleteFile(String name)

          /data/data/app包名/files/文件名     删除文件

    context.fileList()

        /data/data/app包名/files/   获得文件列表,返回文件名 String[] 数组

    context.getCacheDir() 创建或打开已存在的内部存储的缓存文件以File对象返回

        /data/data/app包名/cache/

        存储空间紧张时,系统会自动删除该目录中的文件

        你应该严格限制此目录总大小(例如1M),超出限制时应对文件做清理

    context.getDatabasePath("数据库文件名.db")  只返回路径,不存在也不会创建

     参数为数据库文件名称:如"stu.db" 返回一个数据库文件("stu.db")所在的文件路径,

  但是不确定该文件("stu.db")是否存在,没有创建目录的功能


偏好设置 SharedPreferences

SQLite存储

 

 外部存储8个方法  写外置sdcard 1看空间 2加权限 

所有兼容android的设备都支持一个可共享的外部存储external storage 

用来存储文件 可以是一个可移动的sd卡 或者一个内部的不可移动的存储

保存在外部存储的文件是可读的  并且可以通过usb在电脑上修改他们

获取外部存储的权限:

android.permission.READ_EXTERNAL_STORAGE

android.permission.WRITE_EXTERNAL_STORAGE 是包含读权限的

4.4中外部存储也可以私有化数据于app共生死 且是可以不申请权限的

================================================

一般指外置sdcard的存储,外置sdcard中通常存储的是一些比较大的文件

音频文件、视频文件、图片、文档

外部存储状态的获取、目录的分析和IO操作

外部存储的数据的特点:数据允许被多个应用程序共享数据 也允许设置为应用程序私有

Environment.getExternalStorageState() 获得sdcard的存储状态

        获得当前sdcard存储卡状态代码(外设状态),Environment.常量

        MEDIA_BAD_REMOVAL            正确卸载前已经拔卡

        MEDIA_CHECKING                正在检测

        MEDIA_MOUNTED                正确装载,已准备好读写

        MEDIA_MOUNTED_READ_ONLY   正确装载,只读

        MEDIA_NOFS                    正确装载,但不支持文件系统

        MEDIA_REMOVED               已移除

        MEDIA_SHARED                已经卸载并作为u盘连接电脑

        MEDIA_UNMOUNTABLE           无法装载

        MEDIA_UNMOUNTED             存在sd卡,但未装载   

 

访问sdcard的路径:

4.1以前通过“/sdcard”或者“/mnt/sdcard”表示

但后面系统出现了多个sdcrad的情况  

        /storage/sdcard       

        /storage/sdcard0

        /storage/sdcard1 

目前为了保持和之前代码的兼容 sdcard路径做了link映射

为了代码的健壮和后面新设备的兼容建议使用方法获取sdcard相关目录


Environment.getRootDirectory()              /system  系统所在的目录

Environment.getDataDirectory()              /data    内部存储的目录 android的路径目录

Environment.getDownloadCacheDirectory()     /cache   获得sdcard下载时的缓存目录 

Environment.getExternalStoragePublicDirectory(文件类型

获得sdcard根目录下的子目录mnt/sdcard     此目录中的数据在应用卸载时不会被删除

        获得某种类型文件的标准存储目录,Environment.常量

        DIRECTORY_DOWNLOADS         下载

        DIRECTORY_ALARMS            闹铃

        DIRECTORY_DCIM              数码相机存储

        DIRECTORY_MOVIES            电影

        DIRECTORY_MUSIC             音乐

        DIRECTORY_NOTIFICATIONS     通知音

        DIRECTORY_PICTURES          图片

        DIRECTORY_PODCASTS          播客

        DIRECTORY_RINGTONES         铃声

Environment.getExternalStorageDirectory()  获得sdcard根目录 mnt/sdcard

不同android设备系统的这个路径是不一样      外部存储卡路径 File 对象  

    

4.4 API19才可以在外部存储里保存app的私有目录  为了app文件在外部存储的安全性


context.getExternalCacheDir() 获得外置sdcard(外部存储)中应用程序的私有缓存目录

        应用程序目录中的数据在应用程序卸载时会一起被删除

        mnt/sdcard/Android/data/app包名/cache/    //获得外置sdcard中应用程序的私有目录

        该方法是属于Activity类的,也就是Context

        写应用程序私有目录不加权限会警告,所以得加上权限

     写入sd卡的缓存私有文件

context.getExternalFileDir()  

仅自己app可以读取

context.getExternalFilesDir(Environment.DIRECTORY_MUSIC)  可以指定文件类型目录

     mnt/sdcard/Android/data/app包名/files/    //获得外置sdcard中应用程序的私有目录

     //应用程序私有目录中的数据会在应用卸载时一起被卸载

     该方法是属于Activity类的,也就是Context

     即卸载应用时希望把和应用相关的数据也删除用该方法

   该方法不一定总能访问到sd卡中的信息,如果设备自身已经有了一部分内部存储当作外部存储

   那这个方法就不能访问到sd


ps:

当用户卸载app时会删除你保存在内部存储的所有文件和所有使用本app在外部存储的私有文件和私有缓存文件,从而不会留下垃圾信息

而且外部存储的这个私有文件和私有缓存文件分别对应设置-应用中的清除数据和清除缓存选项


事先知道要存储数据量的大小就可以先查询下可用空间一避免IOException

StatFS sdcard中空间的使用状态  获得sdcard空间大小

==========================================

  获得指定空间的空间使用情况  获得sdcard和手机内存使用情况

 

创建对象: StatFs sf = new StatFs(File对象);//参数一般给sdcard的根目录

 

getBlockCount()        块的数量

getBlockSize()           块的大小 

getFreeBlocks()         空闲的块数量(空闲不意味着就可用)

getAvailableBlocks()  有权可用的块数量


getFreeSpace() 返回剩余空间

getTotalSpace() 返回总空间

返回的可用空间大小并不说明你就能再存储这么多数据

如果剩余可用空间比你要存的数据大几M 或者空间被占用率小于90%都还可以 否则未必能存入

并不需要每次存文件都来判断,加个异常捕获就ok了

而且你也未必知道你要存储的数据有大多

你想判断也没法判断 所以catch这个IOEcpetion就好了




Win11移动热点连接故障排查:从IP配置失败到网络共享的全面解决指南 本文提供了Win11移动热点连接故障的全面排查指南,重点解决手机连接时卡在“获取IP地址”或提示“IP配置失败”的问题。文章从基础检查(如确认网络连接、选择正确共享源)入手,深入讲解了核心的网络适配器共享设置、关键系统服务检查、防火墙配置以及终极解决方案——网络重置。通过系统性的步骤,帮助用户彻底修复Win11移动热点无法共享网络的问题。 阅读详情

相关推荐

芒果YOLO11改进22:检测头Head篇:即插即用|《新颖高效AsDDet检测头》独一无二的结构改进,公开数据集mAP高效涨点,即插即用|检测头新颖改进,性能高效涨点,全网首发独一份

检测头Head篇:即插即用|《新颖高效AsDDet检测头》独一无二的结构改进,公开数据集mAP高效涨点,即插即用|检测头新颖改进,性能高效涨点,全网首发独一份

包括YOLOv5、YOLOv7、YOLOv8等模型改进 643

Android 常用路径的获取

Android 常用路径的获取 作者:ZONE画派 链接:https://www.jianshu.com/p/e8a11d23513b 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 由于历史原因,Android 历史上一些路径并不固定(也和外存设备的变更有关)。 没法通过固定的路径访问一些文件,需要通过不同的接口获取路径。 一些常用路径如下: 路径 ...

qq471208499的博客 905

华为OD干了两个月,还是跑了

​本人工作了快13年,base南京。2024年2月份由于公司业务变动第一次拿到了公司发的大礼包,同时也面临着失业的问题,我对自己的技术还是很有信心的,但是,找了大概有一个多月时间,发现心意的工作的确不太好找,当然收到挺多家offer,就是薪资不太满意,外包也一直不想去,不过说实话外包给的薪资普遍要比自研的单位要高一些,最后为了钱还是进华为(既然选择外包那就选择好一些的吧),毕竟中年老男人工作不能断太久。

啊渊的专栏 1万+

数据库备份

import android.content.Context; import android.content.pm.PackageManager; import android.os.AsyncTask; import android.os.Environment; import android.util.Log; import java.io.File; import jav

燕皇槟枳的博客 242

Android_7_数据存数方式

Android_7_数据存数方式

红烧馍的博客 417

android context获取目录详解

获取 sqlite系统数据库路径 方式1: ApkInfo apkInfo = new ResourceUtil(context).getApkInfo(); APP_PATH = new StringBuilder("/data/data/").append(apkInfo.packageName) .toString(); SHARED_PREFS = APP_PATH + ...

weixin_30522095的博客 279

Android 获取各种路径方法以及对路径的解释

App专属文件 vs App独立文件 app专属文件就是那些只有该app才可以使用的文件,例如专属格式的电子书,app独立文件就是那些不依赖于某特定app的文件,例如照片。 App专属文件 这类文件应该是随着app删除而一起删除的,它们可以被存储在两个地方:internal storage 和 external storage 。 internal storage就是手机自带的一块存储区域,通常很小;external storage就是通常所说的SD卡,通常很大,有16GB,32GB等。 .

qq_19688207的博客 3228

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

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

qq_30665153的博客 3578

2024年Android最全安卓学习之七----数据存储,ios大厂面试

针对于上面的问题,我总结出了互联网公司Android程序员面试涉及到的绝大部分面试题及答案,并整理做成了文档,以及系统的进阶学习视频资料。(包括Java在Android开发中应用、APP框架知识体系、高级UI、全方位性能调优,NDK开发,音视频技术,人工智能技术,跨平台技术等技术资料),希望能帮助到你面试前的复习,且找到一个好的工作,也节省大家在网上搜索资料的时间来学习。网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

2401_84520271的博客 844

安卓学习笔记-数据存储

本文是《安卓学习笔记-声明式UI》的续篇,重点探讨数据存储层与业务逻辑层的解耦。

wy53111的博客 974

安卓学习数据存储

方法一.保存文件路径的方式对文件进行存储 前面是将数据保存到应用的内部:文件路径:/data/user/0/com.example.qqlogindemo/files 1)通过点击事件处理 2)HandlerLoginEvent()方法事件处理 /** * 处理登录事件 */ private void handlerLoginEvent(View v) { //拿到界面上输入的账号和密码...

北风的博客 2457

安卓基础学习_ Android数据存储与IO

数据储存方式: 1.文件 2.SharesPreferences(偏好参数保存) 3.SQLite数据库 4.内容提供者(数据共享) 5.网络 一、SharePreferences偏好参数 SharesPreferences保存用户偏好参数(XML文件形式保存在shared_prefs下) public void save(String username,Integer pas

On The Way 1105

安卓之数据存储学习总结

安卓的数据存储方式大概有四种: 一、sdcard文件 数据区中的文件只能被自己的程序访问,存放路径为data/data/程序名/文件名 写入: private void writefile(String str, String path) { // TODO Auto-generated method stub File file; try { file = new F

TO TOP CODER 1236

安卓开发之数据存储学习

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

iris的博客 594

第七章 数据存储Android基础学习

第七章 数据存储Android基础学习】前言版权推荐开源第七章 数据存储7-1 SharedPreferences 轻量数据存储7-2 File7-2-1 Android存储概念7-2-2 File 内部存储7-2-3 File 外部存储最后 前言2024-6-10 20:55:08推荐【天哥】Android开发视频...

weixin_35812582的博客 162

Android学习——数据存储

Android中,提供了三种数据存储的途径,和两种存储方式。三种途径:l  系统配置(Shared Preferences):这类应用主要是系统的配置信息的保存,比如我给程序界面设置了颜色,我想在下一次启动时还是能够保留上次设置的颜色。由于Android系统的界面是采用Activity栈的形式,在系统资源不足时,会收回一些界面,那么,我想有些操作也是需要在不活动时保留下来的,等再次激

烈火青春 1万+

【鼠】安卓学习杂记(十一)——Android数据存储之SharedPreferences

一、适用范围保存少量数据的场景,登录账号、密码等二、概述SharedPreferences是用键值对的方式来存储数据的;也就是说,当保存一条数据的时候需要给这条数据提供一个键,然后通过这个键取得数据的值;而且,SharedPreferences支持多种数据类型的存储。三、提交数据                //第一步:SharedPreferences创建对象 ...

訾博(ZiBo)的博客 179

android学习笔记の数据存储

SharedPreference SharedPreference主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成。 类似过去Windows系统上的ini配置文件,但是它分为多种权限,可以全局共享访问。 例子: 工程1: Java代码 SharedPreference

android_he的专栏 669

Android学习数据存储

Android数据存储: SharedPreferences:适用于轻量级数据存储,如用户设置等。 SQLite:关系型数据库,适合存储结构化数据,支持SQL查询。 文件存储:包括内部存储和外部存储,可用于存储图片、音频等文件。内部存储文件私有,外部存储需处理权限。 Application类:全局数据存储,通过继承Application类,在其内部定义静态变量来存储全局数据。 Content Provider:实现跨应用数据共享,通过定义URI和数据访问权限,允许其他应用访问本应用。

m0_75208773的博客 1992

安卓学习笔记——数据存储之SharedPreference

Android提供了四种数据存储的方式 SharedPreference:一种常用的数据存储方式,其本质是基于XML文件存储键值对数据,通常用来存储一些简单的配置信息。 SQLite:一个轻量级数据库,支持基本SQL语法,是Android系统中常被采用的一种数据存储方式。 ContentProvider:Android系统中能实现应用程序之间数据共享的一种存储方式。 文件:即常说的文件存储方法,常用于存储数据量比较大的数据,但缺点是更新数据困难。 SharedPreference: 1、SharedPr

fuzhijieabc的博客 2094

Android学习数据存储

Android数据存储 1. 主界面XML <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation=

wuweiwei001的专栏 320

安卓学习数据存储(六)

一、文件存储 写入文件 openFileOutput将数据存储到指定的文件当中去。第一个是文件名,第二个是文件的操作模式,MODE_PRIVATE为默认,会覆盖之前内容,MODE_APPEND会追加内容。默认存储到/data/data/pacak name/file下 获得FileOutputStream对象,借助他构建OutputStreamWriter对象,在构建BufferedWriter...

heihei 256
上一篇: 热修复 增量更新 学习笔记
下一篇: Map接口的再学习
xastdm
博客等级 码龄11年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值