Android存储及路径

Android存储及路径,第1张

分为:内部存储和外部存储

如何区分内部存储和外部存储:可以从物理和逻辑区分

从物理的角度区分,内部存储就是手机自带存储空间,外部存储就是外部接入的存储空间例如SD卡

从逻辑意义上区分,data,system 目录就是手机的内部存储,而 mnt 或者 storage目录下的sdcard0指向的sdcard目录就是外部存储。如果是手机自带的外部存储被称为机身外部存储,外置的SD卡则称之为外部存储。当然两者都称为外部存储也没关系。这里描述的内部存储和机身外部存储都属于机身存储;

逻辑区分是从44以上版本开始的;

获取内部存储路径和api对应关系

1,通过Environment

2,通过上下文Context

BuildVERSION_CODESLOLLIPOP及以上版本新增的API

BuildVERSION_CODESN及以上版本新增的API

特点:

1、内部存储路径中的文件是分类存储的,我们无法干涉,除了cache目录,别的目录系统不会自动创建

2、除了files目录,别的目录我们几乎都是无法手动 *** 作的

3、别的App几乎无法访问内部存储中的数据,除了用非法手段或者我们主动暴露

4、内部存储目录下的文件夹及文件会随着app的卸载而被系统自动删除

外部存储又可分为共有目录和私有目录;

私有目录

私有目录:不需要访问权限

Android 在外部存储空间中也提供了特殊目录供App存放私有文件,该路径为:/storage/emulated/0/Android/data/包名/

注意:应用安装之后/storage/emulated/0/Android/data/是没有对应的应用文件夹的,需要手动调用对应的API创建;

获取私有目录路径

共有目录

共有目录:需要申请权限才能访问

权限:60以上需要动态申请

获取共有目录的API 29中已过时:

package comhangchengutil;

import javaioFile;

import javaioFileOutputStream;

import javaioIOException;

import javaioInputStream;

import javautilArrayList;

import javautilHashMap;

import javautilList;

import androidappActivity;

import androidcontentContext;

import androidcontentresAssetManager;

public class GetfilesFromAssets {

private Activity activity;

private String[] files;

public GetfilesFromAssets(Context context) {

thisactivity = (Activity) context;

}

// public void deepFile(Context ctxDealFile, String path) {

// try {

// String str[] = ctxDealFilegetAssets()list(path);

// if (strlength > 0) {// 如果是目录

// File file = new File("/data/" + path);

// filemkdirs();

// for (String string : str) {

// path = path + "/" + string;

// Systemoutprintln("zhoulc:\t" + path);

// // textViewsetText(textViewgetText()+"\t"+path+"\t");

// deepFile(ctxDealFile, path);

// path = pathsubstring(0, pathlastIndexOf('/'));

// }

// } else {// 如果是文件

// InputStream is = ctxDealFilegetAssets()open(path);

// FileOutputStream fos = new FileOutputStream(new File("/data/"

// + path));

// byte[] buffer = new byte[1024];

// int count = 0;

// while (true) {

// count++;

// int len = isread(buffer);

// if (len == -1) {

// break;

// }

// foswrite(buffer, 0, len);

// }

// isclose();

// fosclose();

// }

// } catch (IOException e) {

// // TODO Auto-generated catch block

// eprintStackTrace();

// }

// }

public String[] getfileFromAssets(String path) {

AssetManager assetManager = activitygetAssets();

// String[] files;

try {

files = assetManagerlist(path);

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

return files;

}

public List listHtmlOfAssets() {

List list = new ArrayList();

files = getfileFromAssets("html");

for (int i = 0; i < fileslength; i++) {

HashMap map = new HashMap();

mapput("htmlname", files[i]);

listadd(map);

}

return list;

}

}

android的硬存储是按照linux系统规则来划分的,用于存储客户信息和客户安装的应用的是/data分区,你如果使用的是c程序的话,应该是在/data/app之类的下面,我手头没有板子没法给你查。文件夹是google约定俗成的,不同厂家应该都是一样的路径。如果是厂家定制的应用则是在/system分区下,路径应该是/system/app下。

如果你是一个android系统学习者,而不是应用开发者的话,我建议看看以下system/etc/initrc对于你会有很大的帮助。

以上就是关于Android存储及路径全部的内容,包括:Android存储及路径、Android如何获取asset目录下所有文件的路径、Android:怎么获取当前文件(类)所在的目录的完整路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9727325.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存