Android 开发 存储目录的详解

Android 开发 存储目录的详解
  • 简介

  •   Android设备,有3个地方的文件存储位置,他们分别是:
  •   内部存储空间(用户无法浏览到此目录)
  •   外部存储空间(就是手机自身的文件管理目录,用户可以浏览)
  •   SD卡的存储空间(需要插入T卡)
  •   SharedPreferences目录
  •   存储数据库DB目录

 

  

 

内部存储空间

  内部存储空间的获取都需要使用Context.

  方法

  getFilesDir(); 

    对应内部存储的路径为: data/data/packagename/files

String filesDir = getApplicationContext().getFilesDir().getPath(); 

  getCacheDir();

    对应内部存储的路径为:data/data/packagename/cache ,cache是缓存的意思,这些文件一旦设备内部存储空间不足时,这些保存在cache下的文件会删除,不要指望系统为你删除,一般需要自己设定阈值,一旦系统满时,系统也会删掉cache!----  一般聊天记录都会使用

String cacheDir = getApplicationContext().getCacheDir().getPath();

  处理文件方法

  openFileInput();和openFileOutput();

  这2个方法对data/data/packagename/files目录下操作文件

  fileList();

  方法是用来列出该data/data/packagename/files目录下的所有文件

  deleteFile(String name);

  用来删除该files目录下的文件

 

外部存储空间

  外部存储空间有2种不同目录的文件路径,他们分别需要使用Context和Environment来获取,下面我们逐个介绍获取方式与对应路径

  需要使用Context获取方法

  使用上下文获取的路径主要是/android/data/你的包名/      此目录下的路径

  getExternalCacheDir();

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/cache  此方法为获取cache缓存文件

String externalCacheDir = getApplicationContext().getExternalCacheDir().getPath();

  getExternalCacheDirs();

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/cache  此方法为获取cache下所以文件数组集合

File[] externalCacheDirs = getApplicationContext().getExternalCacheDirs();

   getExternalFilesDir(String type);

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/files    此方法获取files文件下的指定文件,这里的参数可以传入null也可以传入一个文件名

String externalFilesDir = getApplicationContext().getExternalFilesDir(null).getPath();

  getExternalFilesDirs(String type);

    对应外部存储路径:/storage/emulated/0/Android/data/packagename/files  此方法获取files文件指定目录的文件数组集合,这里的参数可以传入null也可以传入一个文件名

File[] externalFilesDirs = getApplicationContext().getExternalFilesDirs(null);

   getExternalMediaDirs();

    对应外部存储路径:/storage/emulated/0/Android/media/packagename  此方法获取包名路径下的文件数组集合

 

File[] externalMediaDirs = getApplicationContext().getExternalMediaDirs();

 

  需要使用Environment获取方法

   getExternalStorageState();

    获取sd卡状态,此方法返回的是String类型,一共有以下几种类型:

  • MEDIA_UNKNOWN   SD卡未知
  • MEDIA_REMOVED    SD卡移除
  • MEDIA_UNMOUNTED  SD卡未安装
  • MEDIA_CHECKING   SD卡检查中,刚装上SD卡时
  • MEDIA_NOFS            SD卡为空白或正在使用不受支持的文件系统
  • MEDIA_MOUNTED   SD卡安装
  • MEDIA_MOUNTED_READ_ONLY  SD卡安装但是只读
  • MEDIA_SHARED   SD卡共享
  • MEDIA_BAD_REMOVAL  SD卡移除错误
  • MEDIA_UNMOUNTABLE  存在SD卡但是不能挂载,例如发生在介质损坏
     String externalStorageState = Environment.getExternalStorageState();if (externalStorageState.equals(Environment.MEDIA_MOUNTED)){//sd卡已经安装}

   getExternalStorageDirectory();

    对应外部存储路径:/storage/emulated/0  此方法获取外部存储根目录路径

String externalStorageDirectory = Environment.getExternalStorageDirectory().getPath();

  getExternalStoragePublicDirectory(String type);

    获取外部存储的共享文件夹路径(就是拍照文件夹/下载文件夹/音乐文件夹这些系统的共享文件夹),使用的时候参数必需携带路径类型,且不能为null.

    以相机DCIM目录为例子对应获取的路径为:/storage/emulated/0/DCIM

        String externalStoragePublicDirectory = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getPath();
  • DIRECTORY_MUSIC  音乐目录
  • DIRECTORY_PODCASTS  播客目录
  • DIRECTORY_RINGTONES  铃声目录
  • DIRECTORY_ALARMS   警报(闹钟/定时器)铃声目录
  • DIRECTORY_NOTIFICATIONS  提示音目录
  • DIRECTORY_PICTURES  图片目录
  • DIRECTORY_MOVIES  电影目录
  • DIRECTORY_DOWNLOADS  下载目录
  • DIRECTORY_DCIM   相机拍照或录像文件的存储目录
  • DIRECTORY_DOCUMENTS   文件文档目录

 

系统存储空间

   getRootDirectory();

    对应获取系统分区根路径:/system  此方法是获取系统根目录路径,返回包含核心Android操作系统的“系统”分区的根目录,始终以只读方式显示和安装。

 

String rootDirectory = Environment.getRootDirectory().getPath();

 

  getDataDirectory();

    对应获取用户数据目录路径:/data  返回用户数据目录

 

String dataDirectory = Environment.getDataDirectory().getPath();

 

  getDownloadCacheDirectory();

    对应获取用户缓存目录路径:/data/cache  返回下载/缓存内容目录

 

String downloadCacheDirectory = Environment.getDownloadCacheDirectory().getPath();

 

 

posted on 2019-03-08 14:22 观心静 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/guanxinjing/p/10495568.html

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

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

相关文章

大数据项目交付国标_在紧迫的期限内交付大型项目

大数据项目交付国标by Paul McGillivray保罗麦吉里夫瑞(Paul McGillivray) 在紧迫的期限内交付大型Web项目 (Delivering a big web project for a tight deadline) This week we launched the first phase of a large website for a fast-growing business, ‘Jump In’. The …

CentOS 安装MySQL(rpm)提示错误Header V3 DSA/SHA1 Signature

提示错误:Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY error: Failed dependencies 错误原因:这是由于yum安装了旧版本的GPG keys造成的 解决办法:后面加上--force --nodeps 原文: 摘要: CentOS安装rpm安装…

linux系统文件的复制,linux操作系统文件复制操作

《linux操作系统文件复制操作》由会员分享,可在线阅读,更多相关《linux操作系统文件复制操作(5页珍藏版)》请在人人文库网上搜索。1、网络操作系统”课程实验报告名:号:业:计算机科学与技术间:2012年5月 日师:北京联合大学-信息学院编制Linux-文件的系统…

恶意软件伪装“正规军”,撕开Booster Cleaner“画皮”下的真相

经常使用手机浏览器阅读小说的用户都知道,在浏览器页面经常会出现一些推广游戏应用、手机清理应用等应用的弹窗广告。有时出于方便,我们也会选择直接点开这些弹窗广告进行应用下载。但这种行为并不安全,部分恶意应用会先伪装成“正规军”诱导…

python初学者代码示例_python基础示例

7、写代码 (1)实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!_name "seven"_pwd "123"name input("username:").strip() pwd input("password:").strip()if name _…

33岁想从头学做网页设计_从头开始设计精美的移动应用

33岁想从头学做网页设计by Harshita Arora通过Harshita Arora 从头开始设计精美的移动应用 (Designing beautiful mobile apps from scratch) I started learning graphic design when I was 13. I learned to design websites from online courses and used to play around w…

Lucene 基础理论 (zhuan)

http://www.blogjava.net/hoojo/archive/2012/09/06/387140.html**************************************** 1. 全文检索系统与Lucene简介 1.1 什么是全文检索与全文检索系统 全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引&#xff0…

npm使用指南

npm使用指南 作者:chszs,未经博主同意不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs npm介绍 npm全称为Node Package Manager。是一个基于Node.js的包管理器,也是整个Node.js社区最流行、支持的第三方模…

div固定大小文字溢出自动缩小_【高并发】高并发环境下如何防止Tomcat内存溢出?看完我懂了!!

写在前面随着系统并发量越来越高,Tomcat所占用的内存就会越来越大,如果对Tomcat的内存管理不当,则可能会引发Tomcat内存溢出的问题,那么,如何防止Tomcat内存溢出呢?我们今天就来一起探讨下这个问题。防止To…

linux下的ssh端口号修改,如何在 Linux 中更改 SSH 端口

默认情况下, SSH 侦听端口 22 。 更改默认 SSH 端口可以降低被自动攻击的风险,从而为服务器增加额外的安全层。和更改默认端口相比,将防火墙配置为仅允许从特定主机访问端口 22 则更加简单和安全。本教程介绍如何更改 Linux 中的默认 SSH 端口…

【洛谷P1833】樱花

先说80分代码&#xff1a;最基本的混合背包&#xff0c;判断是完全&#xff0c;01&#xff0c;或是多重&#xff0c;再选择。 状态转移方程&#xff1a;f[j]max(f[j],f[j-co[i]]v[i]); 1 #include<bits/stdc.h>2 using namespace std;3 int a[10001],c[10001],t[10001],f…

TCC分布式事务

https://github.com/changmingxie/tcc-transaction转载于:https://www.cnblogs.com/520playboy/p/7235716.html

迭代器2

小结 凡是可作用于for循环的对象都是Iterable类型&#xff1b; 凡是可作用于next()函数的对象都是Iterator类型&#xff0c;它们表示一个惰性计算的序列&#xff1b; 集合数据类型如list、dict、str等是Iterable但不是Iterator&#xff0c;不过可以通过iter()函数获得一个Itera…

长尾关键词seo_为什么您不应该忘记长尾SEO

长尾关键词seoby Ben Rudolph通过本鲁道夫 为什么您不应该忘记长尾SEO (Why you shouldn’t forget about long tail SEO) A few months ago, I wrote about how I built ThingsOnReddit. It’s a site that finds the best Amazon products posted to Reddit and uses Amazon…

python调用hive与java调用区别_使用Pyhive调用

我正在使用pyhive与hive交互。在 使用下面的代码&#xff0c;SELECT语句运行良好。在# Import hive module and connect from pyhive import hive conn hive.Connection(host"HOST") cur conn.cursor() # Import pandas import pandas as pd # Store select query …

linux gnome启动命令,如何在Gnome Shell上自动启动程序

登录Gnome Shell时自动打开应用程序是提前设置工作区的好方法。在Gnome Shell上自动启动程序的最简单方法是使用Tweaks应用程序。在本指南中&#xff0c;我们将介绍如何安装Gnome Tweaks应用程序以轻松配置自动程序启动。让我们开始吧&#xff01;通过GUI自动启动程序默认情况下…

netstat查看linux运行的端口,查看哪些端口被打开 netstat -anp

一、查看哪些端口被打开 netstat -tnl二、关闭端口号:iptables -A OUTPUT -p tcp --dport 端口号-j DROP三、打开端口号&#xff1a;iptables -A INPUT -ptcp --dport 端口号-j ACCEPT四、保存设置service iptables save五、以下是linux打开端口命令的使用方法。nc -lp 23 &…

用户体验岗如何说服其他部门_为什么我们应该说服用户更新他们的浏览器-这是双赢的。...

用户体验岗如何说服其他部门by Alex Ewerlf由AlexEwerlf 为什么我们应该说服用户更新他们的浏览器-这是双赢的。 (Why we should convince our users to update their browsers — it’s a win-win.) Unless you’ve been living under a rock recently, you’re aware of Mel…

【JAVA并发编程实战】3、同步容器

同步容器包括Vector和Hashtable&#xff0c;还有一些由Collections.synchronizedXxx等工厂方法创建的 1、同步容器类的问题 同步容器类都是线程安全的&#xff0c;但是有些时候还是要客户端加锁来保护复合操作 就比如vector的操作&#xff0c;如果又两个方法一个获取vector集合…

php 动态加载html内容_ThinkPHP5.1+Swoole实现的开源内容管理框架

一款支持Swoole的开源内容管理框架&#xff0c;基于ThinkPHP5.1开发&#xff0c;同时支持PHP-FPM和Swoole双模式&#xff0c;让WEB开发更快!主要特性更改框架协议为MIT,让你更自由地飞基于ThinkPHP 5.1重构&#xff0c;但核心代码兼容5.0版本&#xff0c;保证老用户最小升级成本…