android 内部文件读取

简介:

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() :关闭输出流,释放和这个流相关的系统资源。

对文件和流的操作容易引发异常,所以必须要用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();//关闭流

读文件

[java]  view plain  copy
 print ?
  1. FileInputStream fis = null;//定义一个全局变量  
  2. fis = openFileInput(FILE_NAME);//打开要读取的文件  
  3. if (fis.available() == 0){//判断文件是否为空,为空就直接返回  
  4.  return;  
  5. }  
  6. byte[] readBytes = new byte[fis.available()];//把文件里的内容转化为字节  
  7. while(fis.read(readBytes) != -1){//读文件,直到读到最后  
  8. }  
  9. String text = new String(readBytes);//把读到的字节转化为字符串  


读文件的第二种方法

[java]  view plain  copy
 print ?
  1. String path = "/data/data/cn.itcast.file/files/writeable.txt";//得到文件路径  
  2.   File file = new File(path);//创建一个文件对象  
  3.   FileInputStream inStream = new FileInputStream(file);//读文件  
  4.   byte[] buffer = new byte[1024];//缓存  
  5.   int len = 0;  
  6.   ByteArrayOutputStream outStream = new ByteArrayOutputStream();  
  7.   while( (len = inStream.read(buffer))!= -1){//直到读到文件结束  
  8.    outStream.write(buffer, 0, len);  
  9.   }  
  10.   byte[] data = outStream.toByteArray();//得到文件的二进制数据  
  11.   outStream.close();  
  12.   inStream.close();  
  13.   Log.i(TAG, new String(data));  



转载:http://blog.csdn.net/chaoyu168/article/details/50536331

目录
相关文章
|
Android开发 开发工具
Android local.properties 文件读取
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/53761199 本文出自【赵彦军的博客】 在Android Studio项目里面有个local.properties文件,这个文件可以放一些系统配置。
1169 0
|
5天前
|
Linux 编译器 Android开发
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
在Linux环境下,本文指导如何交叉编译x265的so库以适应Android。首先,需安装cmake和下载android-ndk-r21e。接着,下载x265源码,修改crosscompile.cmake的编译器设置。配置x265源码,使用指定的NDK路径,并在配置界面修改相关选项。随后,修改编译规则,编译并安装x265,调整pc描述文件并更新PKG_CONFIG_PATH。最后,修改FFmpeg配置脚本启用x265支持,编译安装FFmpeg,将生成的so文件导入Android工程,调整gradle配置以确保顺利运行。
24 1
FFmpeg开发笔记(九)Linux交叉编译Android的x265库
|
27天前
|
Java Android开发
Android 开发获取通知栏权限时会出现两个应用图标
Android 开发获取通知栏权限时会出现两个应用图标
14 0
|
1月前
|
XML 缓存 Android开发
Android开发,使用kotlin学习多媒体功能(详细)
Android开发,使用kotlin学习多媒体功能(详细)
103 0
|
1月前
|
设计模式 人工智能 开发工具
安卓应用开发:构建未来移动体验
【2月更文挑战第17天】 随着智能手机的普及和移动互联网技术的不断进步,安卓应用开发已成为一个热门领域。本文将深入探讨安卓平台的应用开发流程、关键技术以及未来发展趋势。通过分析安卓系统的架构、开发工具和框架,本文旨在为开发者提供全面的技术指导,帮助他们构建高效、创新的移动应用,以满足不断变化的市场需求。
18 1
|
1月前
|
机器学习/深度学习 调度 Android开发
安卓应用开发:打造高效通知管理系统
【2月更文挑战第14天】 在移动操作系统中,通知管理是影响用户体验的关键因素之一。本文将探讨如何在安卓平台上构建一个高效的通知管理系统,包括服务、频道和通知的优化策略。我们将讨论最新的安卓开发工具和技术,以及如何通过这些工具提高通知的可见性和用户互动性,同时确保不会对用户造成干扰。
33 1
|
1天前
|
数据库 Android开发 开发者
安卓应用开发:构建高效用户界面的策略
【4月更文挑战第24天】 在竞争激烈的移动应用市场中,一个流畅且响应迅速的用户界面(UI)是吸引和保留用户的关键。针对安卓平台,开发者面临着多样化的设备和系统版本,这增加了构建高效UI的复杂性。本文将深入分析安卓平台上构建高效用户界面的最佳实践,包括布局优化、资源管理和绘制性能的考量,旨在为开发者提供实用的技术指南,帮助他们创建更流畅的用户体验。
|
18天前
|
XML 开发工具 Android开发
构建高效的安卓应用:使用Jetpack Compose优化UI开发
【4月更文挑战第7天】 随着Android开发不断进化,开发者面临着提高应用性能与简化UI构建流程的双重挑战。本文将探讨如何使用Jetpack Compose这一现代UI工具包来优化安卓应用的开发流程,并提升用户界面的流畅性与一致性。通过介绍Jetpack Compose的核心概念、与传统方法的区别以及实际集成步骤,我们旨在提供一种高效且可靠的解决方案,以帮助开发者构建响应迅速且用户体验优良的安卓应用。
|
21天前
|
监控 算法 Android开发
安卓应用开发:打造高效启动流程
【4月更文挑战第5天】 在移动应用的世界中,用户的第一印象至关重要。特别是对于安卓应用而言,启动时间是用户体验的关键指标之一。本文将深入探讨如何优化安卓应用的启动流程,从而减少启动时间,提升用户满意度。我们将从分析应用启动流程的各个阶段入手,提出一系列实用的技术策略,包括代码层面的优化、资源加载的管理以及异步初始化等,帮助开发者构建快速响应的安卓应用。