Android入门笔记 - 数据存储 - 文件
2014-12-10 23:20
465 查看
来看看第二个数据存储方式,那就是文件。在android开发中有自己的文件操作,当然也可以使用java.io 的文件操作。我们来看看下面几个例子:
今天就不贴整的代码了,分开看例子:
1. 读取assets/ 目录下的文件:
这里读入文件后,我们将文件写出到 SDcard中, filedir其实是路径:mnt/sdcard/ 。我们来看一看具体效果:
原文件:
拷贝文件:
2. 读取和写入 data/data/ 包名/ 目录下的文件
系统自动在包名下创建 files/ 目录来存放文件,这里需要注意,在使用 openFileOutput()的时候,就不能再添加路径了,因为系统自动处理放在files/ 下面,不想使用assets/ 的时候,还可以添加路径, 那么就是在 assets/ 路径/ 下面创建创建文件。
读取也是一样,需要使用 activity.openFileInput() 才能打开。
总的来说在android使用文件操作和java.io 是差不多的,看看就懂。
今天就不贴整的代码了,分开看例子:
1. 读取assets/ 目录下的文件:
// 1. 读写 assets 目录下的文件 try { InputStream is = getResources().getAssets().open( "sounds/Dreamer.mp3"); int length = is.available(); Log.e(TAG, "length=" + length); byte[] buffer = new byte[length]; is.read(buffer); is.close(); File file = new File(filedir, "Dreamer(copy).mp3"); FileOutputStream fos = new FileOutputStream(file); fos.write(buffer); fos.close(); } catch (IOException e) { e.printStackTrace(); } finally { }主要用到了 getResources().getAssets().open("sounds/Dreamer.mp3"); 这就是得到 assets/ sounds/ Dreamer.mp3 的输入流,然后用read()方法可以将流读到byte[] 数组中。
这里读入文件后,我们将文件写出到 SDcard中, filedir其实是路径:mnt/sdcard/ 。我们来看一看具体效果:
原文件:
拷贝文件:
2. 读取和写入 data/data/ 包名/ 目录下的文件
// 3.读取和写入 data/data/包名/ 目录下的文件 try { FileOutputStream fileoutputstream = this.openFileOutput("test.html", MODE_PRIVATE); String words = "你好 Hello"; byte[] buffer = words.getBytes(); fileoutputstream.write(buffer); fileoutputstream.close(); FileInputStream fileinputstream = this.openFileInput("test.html"); int length = fileinputstream.available(); byte[] bufferRead = new byte[length]; fileinputstream.read(bufferRead); String wordsRead = EncodingUtils.getString(bufferRead, "UTF-8"); Log.e(TAG, "wordsRead:" + wordsRead); fileinputstream.close(); } catch (IOException e) { e.printStackTrace(); } finally { }像访问 assets/ 目录一样, 要访问包名下的文件也是一样,需要使用特殊的方法,这里使用的是 activity.openFileOutput(), 写出成功后我们来看一下文件目录:
系统自动在包名下创建 files/ 目录来存放文件,这里需要注意,在使用 openFileOutput()的时候,就不能再添加路径了,因为系统自动处理放在files/ 下面,不想使用assets/ 的时候,还可以添加路径, 那么就是在 assets/ 路径/ 下面创建创建文件。
读取也是一样,需要使用 activity.openFileInput() 才能打开。
3. 读取和写入 SDcard 目录下的文件, SDcard的目录为: mnt/sdcard
SDcard的目录获取方式:File filedir = Environment.getExternalStorageDirectory(); String filepath = filedir.getPath();文件操作:
try { FileOutputStream fos = new FileOutputStream(filepath + "/testSD.txt"); String words = "boy 男孩"; byte[] buffer = words.getBytes(); fos.write(buffer); fos.close(); FileInputStream fis = new FileInputStream(filepath + "/testSD.txt"); byte[] bufferRead = new byte[fis.available()]; fis.read(bufferRead); String wordsRead = EncodingUtils.getString(bufferRead, "UTF-8"); fis.close(); Log.e(TAG, "wordsRead:" + wordsRead); } catch (IOException e) { e.printStackTrace(); }
4. 使用File类进行文件读写:
try { File f = new File(filepath, "testSD.txt"); FileOutputStream fos = new FileOutputStream(f); String words = "girl 女孩"; byte[] buffer = words.getBytes(); fos.write(buffer); fos.close(); File fread = new File(filepath, "testSD.txt"); FileInputStream fis = new FileInputStream(fread); byte[] bufferRead = new byte[fis.available()]; fis.read(bufferRead); String wordsRead = EncodingUtils.getString(bufferRead, "UTF-8"); fis.close(); Log.e(TAG, "wordsRead:" + wordsRead); } catch (IOException e) { e.printStackTrace(); }
这里单独将File提出来,是因为File类很使用,java中不管文件还是路径都可以看成File(应该来源于Linux),操作起来很方便。File类还提供很多有用的函数:
最后还有文件的随机读写,使用 RandomAccessFile, 这个就不细讲了,大家可以去参看其它。总的来说在android使用文件操作和java.io 是差不多的,看看就懂。
相关文章推荐
- Android入门学习笔记(一)|基础知识|文件数据存储读取|解析XML
- android菜鸟学习笔记17----Android数据存储(一)文件读写
- Android自学笔记-8-Android数据存储1:文件、SharedPreferences和获取sd卡信息
- android 学习笔记 数据存储到文件中
- Android入门笔记 - 数据存储 - 网络
- Android入门(48)——第三章 数据存储之文件存储
- 自学Android系列 笔记2 使用文件进行数据存储
- Android入门笔记 - 数据存储 - SQLite,单元测试
- 【Android】【笔记】《Android 入门经典》part 10 数据存储
- Android入门笔记 - 数据存储 - SharedPreferences
- Android 数据存储和文件使用案例分析
- Android 学习笔记7---数据存储与访问
- Android数据存储--文件存储
- Android数据存储之文件存储
- Android数据存储之文件存储
- Android开发笔记 -- 文件存储
- android 数据存储和访问方式一:文件详解
- android基础---使用文件进行数据存储
- Android中的文件存储数据方式
- 【Android游戏开发十三】(保存游戏数据 [下文])详解SQLite存储方式,并把SQLite的数据库文件存储在SD卡中!!!