在介绍如何在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系统中的文件存储机制,包括如何读取、写入、重写和删除.txt格式的文件。理解这些知识点对于任何Android开发者来说都极其必要。 一、Android文件存储基础 Android提供了多种本地数据存储方式...
这可以通过`SQLiteOpenHelper`的子类实现,覆盖`onCreate()`和`onUpgrade()`方法,在这些方法中读取`assets`中的数据库文件并写入目标路径。 2. **使用SQLiteOpenHelper** `SQLiteOpenHelper`是Android提供的管理...
本文将深入探讨如何在Android中无需文件存储权限即可保存文件到手机,以及与之相关的权限管理、文件读写和清除缓存等知识点。 1. **运行时权限管理**:自Android 6.0开始,系统不再在安装时一次性授予所有权限,...
通过循环读取文件或文件夹的内容,并将其写入到ZipOutputStream中,从而实现文件或文件夹的压缩。 在本文中,我们提供了一个完整的示例代码,演示如何使用Java语言实现文件或文件夹的压缩成.zip格式压缩包。该示例...
在Android开发中,文件操作是不可或缺的一部分,无论是存储用户数据、日志信息还是应用程序的状态,都需要对文件进行创建、读取、写入等操作。本项目"android开发之文件操作——文件创建和文件读取"提供了相关的代码...
在Android开发中,读取手机文件夹并将数据存放到指定位置是常见的操作,尤其是在进行版本升级时,可能需要处理旧版本的数据或者更新配置文件。这个"Android 读取手机文件夹向指定文件夹下存放数据demo"正是这样一个...
这个"android无权限存读Dir.zip"是一个演示项目,它展示了如何在Android设备上进行存取操作,而无需显式请求存储权限,这对于处理小文件尤其有用,特别是在Android 10及以上版本中,系统对存储权限进行了更严格的...
在Android系统中,读取根目录下的文件或文件夹是一个常见的需求,特别是在开发涉及文件管理的应用时。在本文中,我们将深入探讨如何实现这一功能,同时也会介绍一些相关的Android文件操作知识。 首先,我们来看核心...
在Android开发中,文件读写是一项基础且重要的任务,它涉及到数据持久化、资源管理等多个方面。本知识点主要讲解如何在Android中使用自定义的工具类`FileUtils.java`进行文件的读写操作。 首先,Android系统为...
在Android系统中,文件读写操作是开发过程中常见的任务,涉及到资源文件、数据区文件以及外部存储(如SD卡)的访问。以下是对这些操作的详细说明: 一、资源文件的读取 1. 从resource的raw中读取文件数据: 资源...
2. `getCacheDir()`:与`getFilesDir()`类似,但`getCacheDir()`返回的是缓存文件夹,用于存放临时文件,系统可能会在内存不足时清理这些文件。路径格式类似于`/data/data/<package_name>/cache`。如果你需要清除...
在Android应用开发中,文件的读取与管理是一个基础且重要的知识点,涉及到不同类型的资源文件和API的使用。以下内容将详细阐述Android中文件读取的各个知识点。 ### 1. 从应用资源中读取文件 #### 1.1 读取raw...
创建了文件夹之后,你可以使用`File`类的方法来创建、读取、写入或删除文件。例如,要在刚刚创建的文件夹中创建一个新文件: ```java File newFile = new File(appFolder, "example.txt"); if (!newFile.exists())...
在`FileDemo.zip`中,可能包含了关于文件操作的示例代码,例如创建、删除、读取和写入文件的实例。这些示例可以帮助开发者理解如何在Android环境中正确地处理文件存储。 总结起来,Android文件存储涉及多种策略,...
在Android系统中,创建文件并进行读写操作是应用程序中常见的功能,比如保存用户设置、存储游戏进度或者缓存网络数据。以下将详细介绍如何在Android环境中实现这些操作。 首先,要创建一个文件,你需要获得一个File...
在Android系统中,SD卡(Secure Digital Card)是设备存储扩展和数据交换的重要媒介,它为应用程序提供了额外的存储空间,以保存用户数据、媒体文件或其他应用相关资源。本篇文章将详细探讨Android平台上SD卡的文件...
在Android系统中,开发者经常需要处理与文件和文件夹操作相关的工作,比如创建、读取、写入和修改文件权限。本教程将聚焦于在SDcard(外部存储)上创建新文件和文件夹以及调整其权限的源码实现。SDcard是Android设备...
这个文件可能涵盖如何创建、读取、写入和管理Android设备上的文件,以及如何处理存储权限的示例。 通过理解这些概念和实践,开发者可以更好地掌控Android平台上的文件操作,确保应用的稳定性和用户体验。在实际开发...
在Android开发中,文件操作是不可或缺的一部分,无论是存储用户数据、缓存信息还是读取资源文件,都需要对文件系统有深入的理解。以下是一些关于Android文件操作的关键知识点,结合源码学习能帮助开发者更好地掌握这...