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. ...
随机推荐
- RHCS
简介 Red Hat Cluster Suite :红帽子集群套件 高可用性.高可靠性.负载均衡.存储共享 高可用集群是 RHCS 的核心功能.当应用程序出现故障,或者系统硬件. 网络出现故障时,应用 ...
- POJ1941 The Sierpinski Fractal
Description Consider a regular triangular area, divide it into four equal triangles of half height a ...
- HDU 2896 病毒侵袭
Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻....在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福 ...
- JAVA 中SQL字符动态拼接
select SYR,SFZMHM,CJRZH,XSZBH,HPHM,CLSBDH,FDJH,CLLX,ZDYZT,to_char(CCDJRQ,'YYYY-MM-DD') CCDJRQ from V ...
- 转 vagrant package[打包命令]详解
转 vagrant package[打包命令]详解 vagrant的一个非常重要的功能就是在你的同事之间分享你的box从而使大家的开发环境保持同步,打包[package]正是实现这一功能的关键所在 ...
- WPF捕捉Windows关机事件
private const int SC_SCREENSAVE = 0xF140; private const int WM_QUERYENDSESSION = 0x0011; private boo ...
- java ssl https 连接详解 生成证书
我们先来了解一下什么理HTTPS 1. HTTPS概念 1)简介 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全 ...
- win7下virtualbox装linux共享win7文件问题(已测试可用)
virtualbox这个比较强大,在win7上跑redhat5u4很流畅.os之间共享文件是个大家都很关心的问题,这会直接关系到虚拟机用的爽不爽. 在win7和其上的虚拟机linux之间共享文件也很容 ...
- Log4j使用教程 log4:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
1.Logger类 通过Logger类的静态方法Logger.getRootLogger得到RootLogger.所有其他的loggers是通过静态方法Logger.getLogger来实例化并获取的 ...
- windows下安装redis以及简单的事例
1.安装服务端下载地址:http://code.google.com/p/servicestack/wiki/RedisWindowsDownload我下载了一个 redis-2.0.0服务器包,解压 ...