我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android内部存储与外部存储实例代码分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android内部存储与外部存储实例代码分析

今天小编给大家分享一下Android内部存储与外部存储实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

什么是内部存储和外部存储

内部存储与外部存储的存储介质:

内部存储的介质:RAM(内存) + 内部ROM

外部存储的介质:外部ROM + SDCard(TS卡等等)。

内部存储与外部存储的存储特点:

一般来说,以/data开头的是内部存储。且内部存储不需要任何权限。

例如:

  • /data/data/< applicationId >/shared_prefs

  • /data/data/< applicationId >/databases

  • /data/data/< applicationId >/files // 通过context.getFilesDir() 获取该目录

  • /data/data/< applicationId >/cache //通过context.getCacheDir() 获取该目录

内部存储需要关注的文件夹:

app文件夹(未root无法打开):存放着所有app的apk文件夹

data文件夹:内部都是app的包名,存储着应用程序相关的数据,例如 data/data/包名/(shared_prefs、database、files、cache)

Android SDK提供了几个常见的内部存储文件的权限

  • Context.MODE_PRIVATE :私有方式存储,其他应用无法访问,覆盖旧的同名文件

  • Context.MODE_APPEND:私有方式存储,若有旧的同名文件,则在该文件上追加数据

一般来说,外部存储会放在storage文件夹下或者mnt文件夹下。且需要安卓的权限。

例如:

私有外部存储

  • /storage/emulated/0/Android/data/< applicationId >/files/Music //Context.getExternalFilesDir() 包含如Music等文件夹

  • /storage/emulated/0/Android/data/< applicationId >/cache //Context.getExternalCacheDir 外部缓存文件

以及共有外部存储

/storage/emulated/0 Environment.getExternalStorageDirectory()

/storage/emulated/0/Pictures

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)

外部存储需要注意的文件夹即外部存储的分类:

storage中有一个sdcard文件夹,sdcard下面可以分两类存储:

外部共有存储(共有目录):里面常见的有Pictures、Download等文件夹.

外部私有存储(私有目录):系统中的数据。

Android内部存储与外部存储实例代码分析

内部存储与外部存储的文件夹:

Android内部存储与外部存储实例代码分析

内部存储与外部存储,释放内存方面的总结:

内部存储:随应用卸载被删除。外部存储:

公有目录:存放一些下载的视频文件等,比如还有movies,fictures,music等公有的一些文件目录。

私有目录:随应用卸载被删除。

内部存储与外部存储的代码示例

内部存储

// 存 FileOutputStream fos = null;                try {                    //第一个参数:文件名                    //第二个参数:表示文件输出的类型 这里选择Context.MODE_PRIVATE每次生成相同的文件名,则覆盖原有的文件                    fos = openFileOutput('test', Context.MODE_PRIVATE);                    String nameAndPassword = username + "." + password;                    byte[] bytes = nameAndPassword.getBytes();                    fos.write(bytes);                } catch (Exception e) {                    e.printStackTrace();                } finally {                    if (fos != null) {                        try {                            fos.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }// 取FileInputStream fis = null;                try {                    fis = openFileInput(fileName);                    //fis.available() 判断文件有多少个字节                    byte[] bytes = new byte[fis.available()];                    while (fis.read(bytes) != -1) {                        String message = new String(bytes);                        String[] split = message.split("\\.");                        tv_message.setText("用户名:" + split[0] + "\n" + "密码:" + split[1]);                    }                } catch (Exception e) {                    e.printStackTrace();                }

外部存储

// 获取外部存储地址的位置并创建文件:new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)// 存OutputStream outputStream = null;                try {                        outputStream = new FileOutputStream(new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), 'test2'));                        String nameAndPassword = username + "." + password;                        byte[] bytes = nameAndPassword.getBytes();                        outputStream.write(bytes);                } catch (Exception e) {                    e.printStackTrace();                } finally {                    if (outputStream != null) {                        try {                            outputStream.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }// 取 FileInputStream fis = null;                try {                    //第一个参数:文件目录 第二个参数:文件名                    //getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)对应的路径为:                    // /storage/emulated/0/Android/data/com.example.customviewproject/files/Download                    File file = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName);                        fis = new FileInputStream(file);                        //判断当前文件的字节个数                        byte[] bytes = new byte[fis.available()];                        while (fis.read(bytes) != -1) {                            String message = new String(bytes);                            String[] split = message.split("\\.");                            tv_message.setText("用户名:" + split[0] + "\n" + "密码:" + split[1]);                        }                } catch (Exception e) {                    e.printStackTrace();                } finally {                    if (fis != null) {                        try {                            fis.close();                        } catch (IOException e) {                            e.printStackTrace();                        }                    }                }

以上就是“Android内部存储与外部存储实例代码分析”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android内部存储与外部存储实例代码分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android内部存储与外部存储实例代码分析

今天小编给大家分享一下Android内部存储与外部存储实例代码分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是内部存
2023-07-05

Android内部存储与外部存储的示例讲解

内部存储和外部存储的概念随着Android版本的更新也在发生不断的变化。最早的内部存储指的是系统自带的ROM存储,外部存储指的是外置的Sdcard或者通过OTG挂在的USB存储
2023-03-20

Android文件存储:内部存储,外部存储及其路径

Android系统数据存储分为内部存储和外部存储,内部存储是手机系统自带的存储,一般空间都不大,外部存储一般是SD卡的存储,空间一般都比较大。一般我们会把存储内容放在外部存储空间里。在使用过程需要注意事项: 先判断SD卡是否可用,可用时优先
2022-06-06

android内部存储和外部存储有什么区别

Android的内部存储和外部存储主要有以下几点区别:1. 存储位置:内部存储是设备内部的存储空间,一般是固定不可移除的,而外部存储是可插拔的SD卡或其他外部存储设备。2. 可访问性:对于内部存储,应用程序可以直接访问和写入,不需要任何权限
2023-08-11

Android App将数据写入内部存储和外部存储的示例

File存储(内部存储) 一旦程序在设备安装后,data/data/包名/ 即为内部存储空间,对外保密。 Context提供了2个方法来打开输入、输出流FileInputStream openFileInput(String name)Fi
2022-06-06

MySQL的存储函数与存储过程实例代码分析

这篇文章主要介绍了MySQL的存储函数与存储过程实例代码分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL的存储函数与存储过程实例代码分析文章都会有所收获,下面我们一起来看看吧。MySQL存储过程与存
2023-03-06

mysql存储过程与存储函数实例分析

这篇文章主要介绍了mysql存储过程与存储函数实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql存储过程与存储函数实例分析文章都会有所收获,下面我们一起来看看吧。存储过程简介是一组经过 预先编译
2022-11-30

Android中的存储实例分析

本文小编为大家详细介绍“Android中的存储实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Android中的存储实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1、存储在App内部最简单的一种。
2023-06-26

Android4.4 访问外部存储详解及实例

Android4.4 访问外部存储 在Android 4.4系统中,外置存储卡(SD卡)被称为二级外部存储设备(secondary storage),应用程序已无法往外置存储卡(SD卡)写入数据,并且WRITE_EXTERNAL_STOR
2022-06-06

JS中内存与变量存储的示例分析

这篇文章将为大家详细讲解有关JS中内存与变量存储的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。JS神奇的Number案例一:金额的计算与传递18.9 * 100=1889.99999999999
2023-06-20

Mysql内储存JSON字符串实例分析

本文小编为大家详细介绍“Mysql内储存JSON字符串实例分析”,内容详细,步骤清晰,细节处理妥当,希望这篇“Mysql内储存JSON字符串实例分析”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言JSON 可以
2023-06-29

深入分析C语言存储类型与用户空间内部分布

这篇文章主要介绍了C语言存储类型与用户空间内部分布,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
2022-12-26

mysql事务与存储引擎实例分析

这篇文章主要介绍了mysql事务与存储引擎实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mysql事务与存储引擎实例分析文章都会有所收获,下面我们一起来看看吧。一、MySQL事务1、事务的概念(1)事务
2023-06-30

Android实现文件存储并读取的示例代码

要求: 输入文件名,文件内容分别存储在手机内存和外存中,并且都可以读去取出来。 步骤: 1.创建一个名为CDsaveFile的Android项目 2.编写布局文件activity_main.xml:
2022-06-06

Android编程之SharedPreferences文件存储操作实例分析

本文实例讲述了Android编程之SharedPreferences文件存储操作的方法。分享给大家供大家参考。具体分析如下: SharedPreferences类提供了一种简单的文件存储功能,像程序的配置文件可以通过它来实现。 源代码:pa
2022-06-06

java内部类引用局部变量与外部类成员变量实例分析

这篇“java内部类引用局部变量与外部类成员变量实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“java内部类引用局部
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录