代码源码:http://download.csdn.net/detail/qq_33599978/9724902
一 写入 的步骤:
1. FileOutputStream 找到写入的目的地 FILE_NAME 定义的文件名
FileOutputStream out = new FileOutputStream(getFilesDir() + "/"
+ FILE_NAME,true);
2. 然后将数据写入到文件中 和关闭流 ,count是字符串数据转型成Bt
/* out.write(count.getBytes());
out.close(); */ 数据会丢失
PrintStream ps = new PrintStream(out); // 自动刷新 ,防止数据丢失
// 向文件中写入count(数据),但count是字符,所以转成字节
ps.write(count.getBytes());
ps.close();
out.close();
二:读取的步骤
1.FileInputStream 作为文件输出流,找到文件
FileInputStream in = new FileInputStream(getFilesDir() + "/"
+ FILE_NAME);
2.
//创建byte 的数组
byte[] by = new byte[1024];
//定义读取的长度
int len = -1;
//定义可变长的字符数串
StringBuffer sb = new StringBuffer();
//循环读取 追加末尾 append是将将指定的字符串添加到该缓冲区sb的结尾.
while ((len = in.read(by))!=-1) {
sb.append(new String(by, 0, len));
//new String(by, 0, len);
}
in.close();
三. 封装流
PrintStream
PrintStream在OutputStream基础之上提供了增强的功能,即可以方便地输出各种类型的数据(而不仅限于byte型)的格式化表示形式。PrintStream的方法从不抛出IOEceptin
PrintWriter
PrintWriter提供了PrintStream的所有打印方法,其方法也从不抛出IOException。
与PrintStream的区别:作为处理流使用时,PrintStream只能封装OutputStream类型的字节流,而PrintWriter既可以封装OutputStream类型的字节流,还能够封装Writer类型的字符输出流并增强其功能。
四:字符流和字节流的主要区别:
1.字节流读取的时候,读到一个字节就返回一个字节; 字符流使用了字节流读到一个或多个字节(中文对应的字节数是两个,在UTF-8码表中是3个字节)时。先去查指定的编码表,将查到的字符返回。
2.字节流可以处理所有类型数据,如:图片,MP3,AVI视频文件,而字符流只能处理字符数据。只要是处理纯文本数据,就要优先考虑使用字符流,除此之外都用字节流。
类型 | 字符流 | 字节流 |
File(文件) | FileReader FileWriter |
FileInputStream FileOutputSream |
Memory Array | CharArrayReader CharArrayWriter |
ByteArrayInputStream ByteArrayOutputSream |
Memory String | StringReader StringWriter |
- |
Pipe(管道) |