黑马程序员——JavaSE之IO流二
2015-10-10 21:32
330 查看
-----Jav培训、Android培训、JavaEE培训、iOS培训、.NET培训、期待与您交流!-----
字符流的缓冲区:
缓冲区提高了数据的读写效率,是在流的基础上对流的功能进行了增强。形式有BufferedWriter、BufferedReader。必须结合其他流来使用。
---只要用到缓冲区,就要记得使用buffer(),即要刷新。
缓冲区的关闭,关闭的是它所提高效率的对象。真正执行读写的还是被增强的流,而不是缓冲区
在IO流中的需要换行 对象.write("aaaa\r\naaaa");或者使用 对象.newLine();
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
通过缓冲区复制一个.java文件。
在缓冲区中使用.readLine(),这不包含该行内容的字符串,不包含任何行终止符
![](http://img.blog.csdn.net/20151010215545724?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
自己重写缓冲流中的ReadLine方法和close方法
字符流的缓冲区:
缓冲区提高了数据的读写效率,是在流的基础上对流的功能进行了增强。形式有BufferedWriter、BufferedReader。必须结合其他流来使用。
---只要用到缓冲区,就要记得使用buffer(),即要刷新。
缓冲区的关闭,关闭的是它所提高效率的对象。真正执行读写的还是被增强的流,而不是缓冲区
在IO流中的需要换行 对象.write("aaaa\r\naaaa");或者使用 对象.newLine();
从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
通过缓冲区复制一个.java文件。
在缓冲区中使用.readLine(),这不包含该行内容的字符串,不包含任何行终止符
package atziji.io.test1; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; //readLine方法返回的时候只返回回车符之前的数据内容,并不返回回车符。 public class CopyTextByBuf { public static void main(String[] args){ BufferedReader br = null; BufferedWriter bw = null; try { br = new BufferedReader(new FileReader("FileReaderDemo2.java")); bw = new BufferedWriter(new FileWriter("Ilike.txt")); String buf = null; while((buf = (br.readLine())) != null){ bw.write(buf); bw.newLine(); bw.flush(); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { throw new RuntimeException("文件读取失败!"); }finally{ if(br != null){ try { br.close(); } catch (IOException e) { e.printStackTrace(); } } if(bw != null){ try { bw.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
自己重写缓冲流中的ReadLine方法和close方法
package atziji.io.test1; import java.io.FileReader; import java.io.IOException; //这是简单模拟了下Buffered缓冲区,自己写了ReadLine和close方法。 public class MyBufferedReader { private FileReader r; MyBufferedReader(FileReader r){ this.r = r; } //可以一次读一行数据的方法 public String myReadLine() throws IOException{ //定义一个临时容器,原BufferedReader封装的是字符数组。 //为了演示方便,定义一个StringBuilder容器,因为最终还是要将数据变成字符串。 StringBuilder sb = new StringBuilder(); int ch = 0; while((ch = r.read()) != -1){ if(ch == '\r'){ continue; } if(ch == '\n'){ return sb.toString(); }else{ sb.append((char)ch); } } if(sb.length() != 0){ return sb.toString(); } return null; } public void myClose() throws IOException{ //在ReadLine里面最终执行的还是read方法,所以关闭时自然还是用FileReader的colse方法 r.close(); } }
相关文章推荐
- 黑马程序员——OC基础---协议
- 程序员的思维(转载于伯乐在线-author:水流年)
- 黑马程序员—Foundation框架之NSFileManager、NSNumber与NSDate
- 前端面试记录 阿里云前端 2015-10-10
- 一道关于排序算法的java面试题
- 软件测试面试相关问题
- 十道海量数据处理面试题与十个方法大总结
- iOS面试要点三
- 性能测试面试问题(一)
- 【互联网面试】朋友圈问题
- 黑马程序员——Java语言--面向对象(一)
- 程序员技术练级攻略
- 程序员累了怎么办?
- 面试题集锦
- 前端开发工程师面试题
- 一样是程序员,为什么你付出的汗水和想得到的成功不成正比
- 面试常见的功能测试考试题关于测试方法的
- 软件测试面试题 - 怎么测电梯?(测杯子/椅子/雨伞/电话)
- 程序员书单_架构设计篇
- 经营成功的测试职业生涯 ---(James A. Whittaker)(一)