admin管理员组

文章数量:1532362

2023年12月13日发(作者:)

android文件系统(Linux操作系统的文件系统)

android文件系统(Linux操作系统的文件系统)

1、文件目录分析

system---系统目录

1.1 systemapp---这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认

的组件,自己安装的软件将不会出现在这里,而是data文件夹中

闹钟

浏览器

Bug报告

计算器

日历

日历提供

照相机

下载提供

电子邮件客户端

启动加载器

电子地图

…….

1.2 systembin---这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带

的组件

systembinapp_process 系统进程

systembindalvikvm Dalvik虚拟机宿主

systembindbus-daemon 系统BUS总线监控

systembindebuggerd 调试器

systembinmountd 存储挂载器

systembinnetcfg 网络设置

systembinplaymp3 MP3播放器

systembinpm 包管理器

systembinservicemanager 服务管理器

…….

1.3 systemetc---从文件夹名称来看保存的都是系统的配置文件,比如APN接入点设置等核心配置

APN接入点配置文件

音频过滤器配置文件

书签数据库

总线监视配置文件

systemetcdhcpcd

systemetcevent-log-tags

收藏夹

systemetcfirmware 固件信息

GPS设置文件

内核HCID配置文件

systemetchosts 网络DNS缓存

systemetclocation 定位相关

存储挂载配置文件

提示网页

权限许可

…….

1.4 systemfonts ---字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库,或一些unicode字库

文件大小

…….

1.5 systemframework---framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架。

1.6 systemlib---存放的主要是系统底层库,如平台运行时库

systemliblibandroid_ Android运行时库

systemliblibandroid_ 系统服务组件

音频处理

EQ均衡器

音频过滤器

蓝牙组件

……

1.7 systemmedia---铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音

systemmediaaudioalarms 闹铃音

systemmediaaudionotifications 提示音

systemmediaaudioringtones 铃声

systemmediaaudioui 界面操作事件音

1.8 systemsounds---默认的音乐测试文件,仅有一个文件,用于播放测试的文件

1.9 systemusr---用户文件夹,包含共享、键盘布局、时间区域文件等

1.10 system bin---常用开发工具,比如 tcpdump/sqlite3 等

data---应用及其数据(/data/data/应用的包名 下面存储的是该应用的所有数据)该目录是属于内部存储!(买手机几个重要参数:屏幕、

cup、ram、ROM(16g/))

1.1 /data/app 存放用户安装的软件

1.2 /data/data 存放所有软件(包括/system/app 和 /data/app 和 /mnt/asec中装的软件)的一些lib和xml文件等数据信息

1.3 /data/dalvik-cache 存放程序的缓存文件,这里的文件都是可以删除的

…….

mnt---外部存储(SD卡/有的手机将SD卡已经绑定内置了)

shell adb shell 命令,可以操作模拟器,操作手机系统目录。

exit 退出adb shell

2、如果要缓存数据或者保存文件等应该如何选择?

如果是缓存很小的数据可以缓存在内部存储也可以缓存到外部存储,尽量所有的缓存都缓存到外部存储里面。

data目录下面什么时候以及存的什么数据?应用配置数据(一般使用sharedPreference)(用户习惯—字体、是否自动登录、夜间模式等等)

3、传统的java文件IO访问

4、Android自带的API访问

5、三层架构(MVC)

6、单元测试

7、文件权限(android mode理解)

linux/unix 的档案调用权限分为三级: 档案拥有者、群组、其他

"-"代表文件;"d"代表文件夹(directory)

r--read读权限;

w--write写权限;

x--execute可执行权限。

d rwx rwx --x

111 111 001

7 7 1

四个部分:

d

-wx 创建该文件的所有者的权限(应用自身)

不可读;可写;可执行

rwx 所有者所在的同组所拥有的权限

--x 除了所有者和同组的其他进程的权限(其他的应用)

如何修改文件的权限呢?(需要root)

Linux命令修改:chmod 777

1)adb shell进入手机命令操作

2)找到要修改的目录

3)chmod 777 xxxfile

用程序来执行Linux命令;

看下代码

``

package _11_2_;

import rayOutputStream;

import ;

import putStream;

import tputStream;

import t;

import ;

public class FileUtils {

/**

* 1、通过java api实现文件的写 2、通过java api实现文件的读 3、通过android api实现文件的写 4、通过android

* api实现文件的读

*

* @throws Exception

*/

/**

* 1、通过java api实现文件的写

*

* @param str

* @throws Exception

*/

public static void javaAPISaveContent(String str) throws Exception {

File file = new File("/data/data/_11_2_file/");

if (!()) {

NewFile();

}

FileOutputStream outputStream = new FileOutputStream(file);

(es());

();

}

/**

* 1、通过java api实现文件的读

*

* @param str

* @throws Exception

*/

public static String javaApiReadContent() throws Exception {

File file = new File("/data/data/_11_2_file/");

if (!()) {

return null;

}

FileInputStream inputStream = new FileInputStream(file);

int len = 0;

byte[] buffer = new byte[1024];

// StringBuffer

ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();

while ((len = (buffer)) != -1) {

(buffer, 0, len);

}

();

return ng();

}

/**

* 1、通过android api实现文件的写

*

* _PRIVATE -rw-rw---- _WORLD_READABLE -rw-rw--r-

* _WORLD_WRITEABLE -rw-rw--w- _APPEND -rw-rw----

*

*

*

* 思考:MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE保存文件是怎么保存的?

* MODE_WORLD_READABLE

* 、MODE_WORLD_WRITEABLE、_PRIVATE(当保存的时候如果存在,那么久替换内容,如果不存在那么久创建)

*

*

* -rw-rw----分为四个部分

*

* 第一个部分: - 第二个部分: rw- 第三个部分: rw- 第四个部分: --- 提供给外部的app访问

*

* "-"代表文件;"d"代表文件夹(directory) "r"代表读的权限(read) "w"代表写的权限(write) "x"代表可执行

*

* "-"代表二进制数字0 "d"代表二进制数字1

*

* - r w - r w - --- 0 1 1 0 1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 1 chmod 777

*

*

*

*

* @param str

* @throws Exception

*/

@SuppressWarnings("deprecation")

public static void androidAPISaveContent(Context context, String str)

throws Exception {

FileOutputStream openFileOutput = leOutput("",

_PRIVATE);

(es());

();

}

/**

* 修改文件权限

*

* @param str

* @throws Exception

*/

public static void chmod(Context context) throws Exception {

File file = new File("/data/data/" + kageName()

+ "/");

if (!()) {

return;

}

Process process = time().exec("chmod 777 " + file);

int waitFor = r();

if (waitFor == 0) {

Log.i("main", "修改权限成功!");

} else {

Log.i("main", "修改权限失败!");

}

}

/**

* 1、通过java api实现文件的读

*

* @param str

* @throws Exception

*/

public static String androidApiReadContent() throws Exception {

return null;

}

}

``

本文标签: 文件系统权限文件夹