Android 文件管理方法

Android使用的是基于Linux的文件系统,对于文件的訪问和管理是通过权限设置来限制的.

在Linux系统中,文件权限分别描写叙述了创建者、同组用户和其它用户对文件的操作限制。

x表示可运行,r表示可读,w表示可写,d表示文件夹,-表示普通文件。

产生这种文件权限与程序人员设定的

Android 存储文件的类型

(内部存储)程序开发者能够建立和訪问程序自身的私有文件;

(资源存储)能够訪问保存在资源文件夹中的原始文件和XML文件;

(外部存储)能够在SD卡等外部存储设备中保存文件

Android系统同意应用程序创建仅可以自身訪问的私有文件,文件保存在设备的内部存储器上,在Linux系统下的/data/data/<package name>/files文件夹中

Android系统不仅支持标准Java的IO类和方法,还提供了可以简化读写流式文件过程的函数

FileOutputStream openFileOutput(String filename int mode)

FileInputStream openFileInput(String filename)

參数文件不同意包括描写叙述路径的斜杠(其存储位置固定)

訪问模式:

MODE_PRIVATE 私有模式。缺陷模式,文件仅可以被文件创建程序訪问,或具有同样UID的程序訪问。

MODE_APPEND 追加模式,假设文件已经存在。则在文件的结尾处加入新数据。

MODE_WORLD_READABLE 全局读模式,同意不论什么程序读取私有文件。

MODE_WORLD_WRITEABLE 全局写模式。同意不论什么程序写入私有文件。

三个主要的读方法

abstract int read() :读取一个字节数据。并返回读到的数据。假设返回-1,表示读到了输入流的末尾。

   int read(byte[] b) :将数据读入一个字节数组,同一时候返回实际读取的字节数。假设返回-1,表示读到了输入流的末尾。

   int read(byte[] b, int off, int len) :将数据读入一个字节数组。同一时候返回实际读取的字节数。

假设返回-1,表示读到了输入流的末尾。off指定在数组b中存放数据的起始偏移位置。len指定读取的最大字节数。

其他方法

  long skip(long n) :在输入流中跳过n个字节,并返回实际跳过的字节数。

int available() :返回在不发生堵塞的情况下,可读取的字节数。

void close() :关闭输入流,释放和这个流相关的系统资源。

  void mark(int readlimit) :在输入流的当前位置放置一个标记,假设读取的字节数多于readlimit设置的值,则流忽略这个标记。

  void reset() :返回到上一个标记。

  boolean markSupported() :測试当前流是否支持mark和reset方法。假设支持,返回true,否则返回false。

三个主要的写方法

abstract void write(int b) :往输出流中写入一个字节。

void write(byte[] b) :往输出流中写入数组b中的全部字节。

   void write(byte[] b, int off, int len) :往输出流中写入数组b中从偏移量off開始的len个字节的数据。

其他方法

  void flush() :刷新输出流,强制缓冲区中的输出字节被写出。

  void close() :关闭输出流,释放和这个流相关的系统资源。

对文件和流的操作easy引发异常,所以必需要用try-catch语句

主要核心代码

首先是新建一个文件

private final String FILE_NAME = "Myfile01.txt";

写文件

FileOutputStream fos = null;//声明一个全局变量

//注意以下的语句要进行抛异常处理FileNotFoundException e。IOException e

fos = openFileOutput(FILE_NAME,Context.MODE_PRIVATE);//写流式文件过程的

函数。这里的权限是私有的

String text = entryText.getText().toString();//把输入的内容转化为字符串

fos.write(text.getBytes());//把转化为字符串的内容转化为字节,然后写入

//以下语句写在finally里面

fos.flush();//把缓存里的内容写入到文件

fos.close();//关闭流

读文件

FileInputStream fis = null;//定义一个全局变量
fis = openFileInput(FILE_NAME);//打开要读取的文件
if (fis.available() == 0){//推断文件是否为空。为空就直接返回
return;
}
byte[] readBytes = new byte[fis.available()];//把文件中的内容转化为字节
while(fis.read(readBytes) != -1){//读文件。直到读到最后
}
String text = new String(readBytes);//把读到的字节转化为字符串

读文件的另外一种方法

String path = "/data/data/cn.itcast.file/files/writeable.txt";//得到文件路径
File file = new File(path);//创建一个文件对象
FileInputStream inStream = new FileInputStream(file);//读文件
byte[] buffer = new byte[1024];//缓存
int len = 0;
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
while( (len = inStream.read(buffer))!= -1){//直到读到文件结束
outStream.write(buffer, 0, len);
}
byte[] data = outStream.toByteArray();//得到文件的二进制数据
outStream.close();
inStream.close();
Log.i(TAG, new String(data));

android 内部文件读取的更多相关文章

  1. Android_内部文件读取

    我们这里做一个安卓的简易的文件读取程序之记住密码 首先我们先明确安卓的存储路径, 所有安装至手机的应用都会在 data/data 目录下生成一个安卓文件夹(包名),这个文件夹就是安卓存储的路径 在运行 ...

  2. API内部文件读取

    直接上代码吧 尝试将项目复制后建一个新的项目,结果总是有问题,不过可以把原项目转换为新项目,方法如下: 1.项目右键在android tools 有个 rename application packa ...

  3. Android的文件读取与存储

    Java新建文件,然后就可以写入数据了,但是Android却不一样,因为Android是 基于Linux的,我们在读写文件的时候,还需加上文件的操作模式 Environment类是一个提供访问环境变量 ...

  4. 二十、Android -- SDcard文件读取和保存

    背景                                                                                            一些东西可以 ...

  5. Android -- SDcard文件读取和保存

    背景                                                                                            一些东西可以 ...

  6. Android简单介绍SharedPreference,内部文件,sdcard数据存储

    SharedPreference 以xml的结构储存简单的数据,储存在data/data/程序包名/shared_prefs文件夹中 使用方式 创建对象的方式有三种 Context 的 getShar ...

  7. Android——数据存储(课堂代码整理:SharedPreferences存储和手机内部文件存储)

    layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...

  8. 用adb pull命令从android系统中读取文件失败的原因及解决办法

    问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied   原因:是由于文件权限原因引起.       使用ls -l命令查看android系统中的 ...

  9. android如何保存读取读取文件文件保存到SDcard

    android如何保存读取读取文件文件保存到SDcard 本文来源于www.ifyao.com禁止转载!www.ifyao.com 上图为保存文件的方法体. 上图为如何调用方法体保存数据. 上面的截图 ...

随机推荐

  1. 关于set和multiset的一些用法

    set的一些用法 set的特性 set的特性是,所有元素都会根据元素的键值自动排序,set不允许两个元素有相同的键值. set的一些常用操作函数 insert() insert(key_value); ...

  2. 流编辑器sed知识点总结

    sed(流文本编辑器)     每次读取一行到模式空间中,     修改的sed模式空间中的内容,并不会修改源文件,     继而输出模式空间的内容,     最后删除模式空间中的内容. sed [O ...

  3. oracle11gR2下scott用户以及表的建立

    目录 oracle11gR2下scott用户以及表的建立 找到系统带的sql文件(utlsample.sql) 根据SQL的内容操作 新建用户并授权 scott登录 表操作 查询表(使用pl/sql) ...

  4. jenkins+jacoco+ant+apache集成统计web端功能测试覆盖率

    一.覆盖率定义 作为一个测试人员,保证产品的软件质量是其工作首要目标,为了这个目标,测试人员常常会通过很多手段或工具来加以保证,覆盖率就是其中一环比较重要的环节. 我们通常会将测试覆盖率分为两个部分, ...

  5. 源码分析 脱壳神器ZjDroid工作原理

    0. 神器ZjDroid Xposed框架的另外一个功能就是实现应用的简单脱壳,其实说是Xposed的作用其实也不是,主要是模块编写的好就可以了,主要是利用Xposed的牛逼Hook技术实现的,下面就 ...

  6. spring之注入类型

    spring有三种注入类型: set注入: 构造注入: 接口注入: 一.set注入(引用spring官方文档中的例子)(用的最多) 1.首先在代码中我们需要编写成员变量的set方法,如下所示,一般情况 ...

  7. 简单的webservice发布和测试

    eclipse发布参考:http://www.cnblogs.com/cherxu/p/5179053.html很简单,接口写好后,打个war包放到tomcat里面跑起来: 本例采用axis来测试:发 ...

  8. robotframework安装和配置【转IBM:https://www.ibm.com/developerworks/cn/opensource/os-cn-robot-framework/index.html】

    内容   概览 Robot Framework 介绍 Robot Framework 的安装和配置 RIDE 编辑器介绍 创建测试项目 简单的测试用例的编写 总结 相关主题 评论   Robot Fr ...

  9. Split The Tree

    Split The Tree 时间限制: 1 Sec  内存限制: 128 MB 题目描述 You are given a tree with n vertices, numbered from 1 ...

  10. @Java web程序员,在保留现场,服务不重启的情况下,执行我们的调试代码(JSP 方式)

    一.前言 类加载器实战系列的第六篇(悄悄跟你说,这篇比较水),前面5篇在这里: 实战分析Tomcat的类加载器结构(使用Eclipse MAT验证) 还是Tomcat,关于类加载器的趣味实验 了不得, ...