在介绍如何在Android平台下进行文件的读取之前,有必要了解Android平台下的数据存储规则。在其他的操作系统如Windows 平台下,应用程序可以自由地或者在特定的访问权限基础上访问或修改其他应用程序名下的文件等资源,而在Android平台下,一个应用程序中所有的数据都是私有的。
当应用程序被安装到系统中后,其所在的包会有一个文件夹用于存放自己的数据,只有这个应用程序才有对这个文件夹的写入权限,这个私有的文件夹位于Android系统的/data/data/<应用程序包名>目录下,其他的应用程序都无法再这个文件夹中写入数据。除了存放私有的数据文件夹外,应用程序也具有SD卡的写入权限。
使用文件I/O 方法可以直接往手机中存储数据,默认情况下这些文件不可以被其他的应用程序访问。Android平台支持 java平台下的 文件I/O操作, 主要使用FileInputStream 和 FileOutputStream 这两个类来实现文件的存储与读取。获取这两个类对象的方式有两种。
一:第一种方式就是像Java平台下的实现方式一样通过构造器直接创建,如果需要向打开的文件末尾写入数据,可以通过使用构造器FileOutputStream(File file, boolean append)将 append设置为true来实现。不过需要注意的是采用这种方式获得FileOutputStream 对象时如果文件不存在或不可写入时,会抛出 FileNotFoundException 异常。
二:第二种获取 FileInputStream 和 FileOutputStream 对象的方式是调用 Context.openFileInput 和 Context.openFileOutput两个方法来创建。除了这两个方法外,Context对象还提供了其他几个用于对文件操作的方法,如下所示
Context对象中文操作的API及说明
方法名 说明
openFileInput(String filename) 打开应用程序私有目录下的的指定私有文件以读入数据,返回一个FileInputStream 对象
openFileOutput 打开应用程序私有目录下的的指定私有文件以写入数据,返回一个FileOutputStream 对象,如果文件不存在就创建这个文件。
fileList() 搜索应用程序私有文件夹下的私有文件,返回所有文件名的String数组
deleteFile(String fileName) 删除指定文件名的文件,成功返回true,失败返回false
在使用openFileOutput方法打开文件以写入数据时,需要指定打开模式。默认为零,即MODE_PRIVATE。不同的模式对应的的含义如下:
openFileOutput方法打开文件时的模式
常量 含义
MODE_PRIVATE 默认模式,文件只可以被调用该方法的应用程序访问
MODE_APPEND 如果文件已存在就向该文件的末尾继续写入数据,而不是覆盖原来的数据。
MODE_WORLD_READABLE 赋予所有的应用程序对该文件读的权限。
MODE_WORLD_WRITEABLE 赋予所有的应用程序对该文件写的权限。
下面通过一个小例子来说明Android平台下的文件I/O 操作方式,主要功能是在应用程序私有的数据文件夹下创建一个文件并读取其中的数据显示到屏幕的 TextView中,这个例子也比较简单只有一个类。
先看一下运行后的效果吧。
Activity01
package xiaohang.zhimeng;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.http.util.EncodingUtils;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
public class Activity01 extends Activity{
//常量,为编码格式
public static final String ENCODING = "UTF-8";
//定义文件的名称
String fileName = "test.txt";
//写入和读出的数据信息
String message = "欢迎大家来我们群里讨论问题";
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
writeFileData(fileName, message);
String result = readFileData(fileName);
textView = (TextView)findViewById(R.id.tv);
textView.setTextColor(Color.GREEN);
textView.setTextSize(20.0f);
textView.setText(result);
}
//向指定的文件中写入指定的数据
public void writeFileData(String filename, String message){
try {
FileOutputStream fout = openFileOutput(filename, MODE_PRIVATE);//获得FileOutputStream
//将要写入的字符串转换为byte数组
byte[] bytes = message.getBytes();
fout.write(bytes);//将byte数组写入文件
fout.close();//关闭文件输出流
} catch (Exception e) {
e.printStackTrace();
}
}
//打开指定文件,读取其数据,返回字符串对象
public String readFileData(String fileName){
String result="";
try {
FileInputStream fin = openFileInput(fileName);
//获取文件长度
int lenght = fin.available();
byte[] buffer = new byte[lenght];
fin.read(buffer);
//将byte数组转换成指定格式的字符串
result = EncodingUtils.getString(buffer, ENCODING);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
}
源码见附件
- 大小: 17.4 KB
分享到:
相关推荐
Android私有储存文件和外部储存文件读写,没有写界面,直接看log输出
主要为大家详细介绍了Android实现文件或文件夹压缩成.zip格式压缩包,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
windows文件夹私有、加密
本文实例讲述了Android编程中读写私有文件的方法。分享给大家供大家参考,具体如下: 所谓私有文件,则是指程序自己能读取,而其它程序没有权限访问的文件,此文件保存在Data.app.程序包.file目录下面。 其中写文件...
Android 读取文件内容实现方法,这里整理了几种方法,大家需要可以看下。 如果要打开存放在/data/data/<package>/files目录应用私有的文件,可以使用Activity提供openFileInput()方法。 FileInputStream inStream =...
自己写得 私有文件私有文件 私有文件
这是一个C++调用命令行工具,创建和打开一个私人文件夹的win32小程序。
典型的桌面操作系统提供一种公共文件系统——任何应用软件可以使用它来存储和读取文件,该文件也可以被其他的应用软件所读取(会有一些权限控制设定)。Android采用了一种不同的系统,在Android中,所有的应用软件...
这是一个基于Java语言开发的私有云文件存储微服务系统设计,包含159个文件。主要文件类型包括49个Java源文件、27个JavaScript文件、14个CSS文件、10个map文件、10个HTML文件、5个EOT字体文件、5个SVG文件、5个TTF...
读取netgear AC设备的私有mib文件
私有文件,自己写的私有文件
私有配置文件
简介下怎么设计一个私有文件系统. 安防监控行业必备.
Java开发的一款快捷高效的私有云和在线文档管理系统,为个人网站、企业私有云部署、网络存储、在线文档管理、在线办公等提供安全可控,简便易用、可高度定制的私有云产品。采用windows风格界面、操作习惯,无需适应...
私有云文件存储软件OSS,高可用File System文件云存储微服务系统(私有云文件存储),对文档管理、文件上传、下载、分类、共享、分组、审计、统计等操作进行业务剥离,支持企业内多项目,提供统一的oss私有文件服务
这篇记录的是Android中如何把我们往存储中写入的文件,如何显示到文件管理的下载列表、最近文件列表中。 假设保存的文件为外部存储中的File file,也许是app私有目录中的(未测试)、也许是外部存储根目录中download...
文件加密程序,帮助你加密私有文件。 文件解密程序,帮助你解密自己的私有文件。
使用AndroidStudio,必然要与maven仓库频繁打交道,在创造和分享自己打造的Androidlibrary的时候,maven仓库的知识更是必不可少。本章将为开发者系统梳理这方面的知识。笔者曾经不思量力的思考过『是什么推动了...