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

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

1、文件目录分析

system---系统目录

1.1 \system\app---这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\文件夹中

\system\app\AlarmClock.apk 闹钟

\system\app\Browser.apk 浏览器

\system\app\Bugreport.apk Bug报告

\system\app\Calculator.apk 计算器

\system\app\Calendar.apk 日历

\system\app\CalendarProvider.apk 日历提供

\system\app\Camera.apk 照相机

\system\app\DownloadProvider.apk 下载提供

\system\app\Email.apk 电子邮件客户端

\system\app\Launcher.apk 启动加载器

\system\app\Maps.apk 电子地图

…….

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

\system\bin\app_process 系统进程

\system\bin\dalvikvm Dalvik虚拟机宿主

\system\bin\dbus-daemon 系统BUS总线监控

\system\bin\debuggerd 调试器

\system\bin\mountd 存储挂载器

\system\bin\netcfg 网络设置

\system\bin\playmp3 MP3播放器

\system\bin\pm 包管理器

\system\bin\servicemanager 服务管理器

…….

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

\system\etc\apns-conf.xml APN接入点配置文件

\system\etc\AudioFilter.csv 音频过滤器配置文件

\system\etc\AudioPara4.csv

\system\etc\bookmarks.xml 书签数据库

\system\etc\dbus.conf 总线监视配置文件

\system\etc\dhcpcd

\system\etc\event-log-tags

\system\etc\favorites.xml 收藏夹

\system\etc\firmware 固件信息

\system\etc\gps.conf GPS设置文件

\system\etc\hcid.conf 内核HCID配置文件

\system\etc\hosts 网络DNS缓存

\system\etc\init.goldfish.sh

\system\etc\location 定位相关

\system\etc\mountd.conf 存储挂载配置文件

\system\etc\NOTICE.html 提示网页

\system\etc\permissions.xml 权限许可

…….

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

\system\fonts\DroidSans-Bold.ttf

\system\fonts\DroidSans.ttf

\system\fonts\DroidSansFallback.ttf 文件大小

\system\fonts\DroidSansMono.ttf

\system\fonts\DroidSerif-Bold.ttf

\system\fonts\DroidSerif-BoldItalic.ttf

\system\fonts\DroidSerif-Italic.ttf

\system\fonts\DroidSerif-Regular.ttf

…….

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

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

\system\lib\libandroid_runtime.so Android运行时库

\system\lib\libandroid_servers.so 系统服务组件

\system\lib\libaudio.so 音频处理

\system\lib\libaudioeq.so EQ均衡器

\system\lib\libaudioflinger.so 音频过滤器

\system\lib\libbluetooth.so 蓝牙组件

……

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

\system\media\audio\alarms 闹铃音

\system\media\audio\notifications 提示音

\system\media\audio\ringtones 铃声

\system\media\audio\ui 界面操作事件音

1.8 \system\sounds---默认的音乐测试文件,仅有一个test.mid文件,用于播放测试的文件

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

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

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

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 com.tz.dream_11_2_file.utils;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;

import android.content.Context;
import android.util.Log;

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/com.tz.dream_11_2_file/haha.txt");
    if (!file.exists()) {
        file.createNewFile();
    }
    FileOutputStream outputStream = new FileOutputStream(file);
    outputStream.write(str.getBytes());
    outputStream.close();
}

/**
 * 1、通过java api实现文件的读
 * 
 * @param str
 * @throws Exception
 */
public static String javaApiReadContent() throws Exception {
    File file = new File("/data/data/com.tz.dream_11_2_file/haha.txt");
    if (!file.exists()) {
        return null;
    }
    FileInputStream inputStream = new FileInputStream(file);
    int len = 0;
    byte[] buffer = new byte[1024];
    // StringBuffer
    ByteArrayOutputStream arrayOutputStream = new ByteArrayOutputStream();
    while ((len = inputStream.read(buffer)) != -1) {
        arrayOutputStream.write(buffer, 0, len);
    }
    inputStream.close();
    return arrayOutputStream.toString();
}

/**
 * 1、通过android api实现文件的写
 * 
 * Context.MODE_PRIVATE -rw-rw---- Context.MODE_WORLD_READABLE -rw-rw--r-
 * Context.MODE_WORLD_WRITEABLE -rw-rw--w- Context.MODE_APPEND -rw-rw----
 * 
 * 
 * 
 * 思考:MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE保存文件是怎么保存的?
 * MODE_WORLD_READABLE
 * 、MODE_WORLD_WRITEABLE、Context.MODE_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 = context.openFileOutput("kk.txt",
            Context.MODE_PRIVATE);
    openFileOutput.write(str.getBytes());
    openFileOutput.close();
}

/**
 * 修改文件权限
 * 
 * @param str
 * @throws Exception
 */
public static void chmod(Context context) throws Exception {
    File file = new File("/data/data/" + context.getPackageName()
            + "/haha.txt");
    if (!file.exists()) {
        return;
    }
    Process process = Runtime.getRuntime().exec("chmod 777 " + file);
    int waitFor = process.waitFor();
    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;
}

}

``

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,200评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,526评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,321评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,601评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,446评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,345评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,753评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,405评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,712评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,743评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,529评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,369评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,770评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,026评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,301评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,732评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,927评论 2 336

推荐阅读更多精彩内容