Android读写assets、raw、sdard和工程文件的方法
Android开发离不开对文件的操作,前面的文章“Android简易数据存储之SharedPreferences”和“Android数据存储之SQLite的操作”,分别讲解了简单的数据的存储和数据库数据的操作。然而,前面的两篇文章都未涉及具体文件的操作。下面来看下Android是怎么操作其内置目录文件及外部sdcard数据的。
环境:Android studio、海马玩模拟器
资源文件:
/assets目录下test.txt
aaaaaaaaaaaaaa
bbbbbbb
/res/raw(需要手工创建)目录下rawfile.txt
raw file
ddddddddddd
eeeeeeeeee
ffffffffff
一、读取assets目录下的文件
//读写assets目录下的文件
InputStream is = getResources().getAssets().open("test.txt");
Reader in = new InputStreamReader(is);
BufferedReader bufferedReader = new BufferedReader(in);
String line = null;
while (null != (line = bufferedReader.readLine()) ){
System.out.println("assets file==========" + line);
}
bufferedReader.close();
in.close();
is.close();
由于assets下的文件不会再R.java中生成相应的ID,因此Android提供了AssetManager的方法访问assets下的资源。
二、读取raw目录下的文件
//读取raw目录下的文件,raw位于res目录下,需要手工创建
is = getResources().openRawResource(R.raw.rawfile);
in = new InputStreamReader(is);
bufferedReader = new BufferedReader(in);
line = null;
while (null != (line = bufferedReader.readLine()) ){
System.out.println("rawfile==========" + line);
}
bufferedReader.close();
in.close();
is.close();
三、读写工程内部文件
//读写工程内部文件
FileOutputStream fileOutputStream = openFileOutput("projectfile.txt", Context.MODE_PRIVATE);
OutputStreamWriter osw = new OutputStreamWriter(fileOutputStream);
BufferedWriter bw = new BufferedWriter(osw);
bw.write("ooooooooooooooooooo");
bw.close();
osw.close();
fileOutputStream.close(); FileInputStream fileInputStream = openFileInput("projectfile.txt");
InputStreamReader isr = new InputStreamReader(fileInputStream);
char[] input = new char[fileInputStream.available()];
isr.read(input);
isr.close();
fileInputStream.close();
String str = new String(input);
System.out.println("project file=============" + str);
四、读写sdcard文件
1、AndroidManifest.xml中添加权限控制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
2、读写sdcard文件
//读写sdcard,需要在AndroidManifest.xml中添加权限说明
//<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
File file = Environment.getExternalStorageDirectory();//获取sdcard路径
if(file.exists()){//判断是否存在sdcard
System.out.println("sdcard file path========" + file.getAbsolutePath());
File myfile = new File(file, "myfile_sdcard.txt");
myfile.createNewFile();
FileOutputStream fos = new FileOutputStream(myfile);
fos.write("AAAAAAAAAAa".getBytes());
fos.flush();
fos.close();
} //读取sdcard文件
File file1 = new File(file, "myfile_sdcard.txt");
InputStream inputStream = new FileInputStream(file1);
Reader reader = new InputStreamReader(inputStream);
BufferedReader bufferedReader1 = new BufferedReader(reader);
String iline = null;
while(null != (iline = bufferedReader1.readLine())){
System.out.println("from sdcard myfile_sdcard.txt============" + iline);
}
bufferedReader1.close();
reader.close();
inputStream.close();
五、将APP运行到模拟器中,此时可以看到如下的输出结果
09-13 09:44:57.520 2243-2243/com.example.ibm.dataoperate I/System.out﹕ assets file==========aaaaaaaaaaaaaa
09-13 09:44:57.524 2243-2243/com.example.ibm.dataoperate I/System.out﹕ assets file==========bbbbbbb
09-13 09:44:57.528 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========raw file
09-13 09:44:57.528 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========ddddddddddd
09-13 09:44:57.532 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========eeeeeeeeee
09-13 09:44:57.532 2243-2243/com.example.ibm.dataoperate I/System.out﹕ rawfile==========ffffffffff
09-13 09:44:57.544 2243-2243/com.example.ibm.dataoperate I/System.out﹕ project file=============ooooooooooooooooooo
09-13 09:44:57.552 2243-2243/com.example.ibm.dataoperate I/System.out﹕ sdcard file path========/mnt/sdcard
09-13 09:44:57.556 2243-2243/com.example.ibm.dataoperate I/System.out﹕ from sdcard myfile_sdcard.txt============AAAAAAAAAAa
上述四种操作Android文件的方式,各个处理方式都有所不同。
1、读取assets目录下的资源文件时需要通过getResources().getAssets()方法获取AssetManager的open方法来进行处理;
2、而读取raw目录下的资源文件则通过getResources().openRawResource(R.raw.资源名称)的方式来获取;
3、读写工程其他目录的文件则通过openFileOutput和openFileInput来进行处理;
4、最后sdcard文件的操作需要额外在AndroidManifest.xml中进行权限的声明,并通过Environment.getExternalStorageDirectory()获取sdcard的路径,剩下的就是Java对文件的操作了。
Android读写assets、raw、sdard和工程文件的方法的更多相关文章
- android 打开 res raw目录 中 数据库文件
韩梦飞沙 韩亚飞 313134555@qq.com yue31313 han_meng_fei_sha 安卓不能直接打开 res raw 中的 数据库 文件. 通过 资源 获取资源 方法 , ...
- 【Xcode 4 无法打开 Xcode 5 DP 打开过的工程文件 解决方法】
试用Xcode 5 DP打开现有工程文件后再用Xcode4打开后 Xcode 4 会进入崩溃模式折腾了几次发现下面的方法可以让工程文件恢复 如果在Xcode5-DP中打开过xib文件需要在侧栏中修改I ...
- android 从assets和res中读取文件
1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件被预编译, ...
- android 从assets和res中读取文件(转)
1. 相关文件夹介绍 在Android项目文件夹里面,主要的资源文件是放在res文件夹里面的.assets文件夹是存放不进行编译加工的原生文件,即该文件夹里面的文件不会像xml,java文件 ...
- Android 的assets文件资源与raw文件资源读取
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zpf8861/article/details/34504183 res/raw和assets的同 ...
- Android(java)学习笔记135:Android中assets文件夹资源的访问
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- Android 读取Assets下的资源文件
做Android开发近半年了,东西越学越多,硬盘容量越来越小.很多东西找起来也不方便,为此,我打算从今天起把工作中学到的东西整理起来,写成日记.也希望与广大网友分享我的经验.一同进步.今天主要介绍文件 ...
- Android(java)学习笔记77:Android中assets文件夹资源的访问
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- Android从assets目录下读取文件相关
有一个需求是app的帮助文档是word格式,ios可以直接用webview加载word显示,Android不行.而美工不配合转换成图片,前端没时间把word写成html 没办法,自己搞. 步骤: 1. ...
随机推荐
- 【POJ 1273】Drainage Ditches(网络流)
一直不明白为什么我的耗时几百毫秒,明明差不多的程序啊,我改来改去还是几百毫秒....一个小时后:明白了,原来把最大值0x3f(77)取0x3f3f3f3f就把时间缩短为16ms了.可是为什么原来那样没 ...
- 未完结第八节 JBPM流程节点
1.12个节点介绍 2.Node节点
- ORACLE在存储过程中记录日志的处理包
Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...
- Spring MVC实现防止表单重复提交(转)
Spring MVC拦截器+注解方式实现防止表单重复提交
- javascript自动转换大小写
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
- java连接mysql(三)
事务的四大特性(ACID) 原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么全部成功,要么全部失败.比如在同一个事务中的SQL语句,要么全部执行成功,要么全部执行 ...
- android HDMI 清晰度 分辨率
但改变分辨率时,发送广播即可: Intent intent_outputmode_change = new Intent(ACTION_OUTPUTMODE_CHANGE); intent_o ...
- leach和leach-c协议仿真
http://blog.csdn.net/codingkid/article/details/7215216 1.复制leach_test为leach-c_test,修改里面的文件夹和输出文件名.并且 ...
- jquery发送ajax请求返回数据格式
jquery向服务器发送一个ajax请求后,可以返回多种类型的数据格式,包括:html,xml,json,text等. 1.html格式的数据 "<div class='comment ...
- Java初学(三)
一.使用键盘录入数据 三步:1.导入包:import java.util.Scanner; 2.创建键盘录入对象:Scanner sc=new Scanner(System.in); 3.通过 ...