黑马程序员_IO流学习第一天
来源:互联网 发布:网络教育课程 编辑:程序博客网 时间:2024/05/16 06:57
IO流全称为Input、Output流(输入输出流)
流按操作数据分为两种:字节流和字符流
字节流的抽象基类:InputStream、OutputStream
字符流的抽象基类:Reader、Writer
缓冲区BufferedWriter、BufferedReader
其中BufferedWriter有一个方法 newLine() 是换行的意思。与\n换行符不同的是。newLine()方法是跨平台的。而\n换行符只能是Windows系统上有效。在linux系统无效。
而BufferedReader有一个方法readLine()在读取文本文件时,读取一行文本数据。返回String(读取的该行的文本,不包含行终止符)或NULL(说明已经读取到文本结尾)
使用缓冲区对象进行复制文件,如下
public class BufferedCopyTest {public static void main(String[] args) {File srcfile = new File("d:\\fengjd\\temp\\writer.txt");File targetFile = new File("d:\\fengjd\\temp\\taget.txt");FileReader fr = null;FileWriter fw = null;// 缓冲区BufferedWriter bw = null;BufferedReader br = null;try {fr = new FileReader(srcfile);fw = new FileWriter(targetFile);// 用流对象来构造一个缓冲区对象bw = new BufferedWriter(fw);br = new BufferedReader(fr);String tempStr = "";while((tempStr = br.readLine()) != null){bw.write(tempStr);bw.newLine();bw.flush();}} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}finally{if(bw!=null){try {// 关闭缓冲区方法,实际上关闭的是缓冲区中的流对象bw.close();} catch (IOException e) {System.out.println("写入出异常了..");e.printStackTrace();}}if(br!=null){try {br.close();} catch (IOException e) {System.out.println("读取出异常了..");e.printStackTrace();}}}}}
总结:使用缓冲区件和不使用缓冲区复制文本文件的区别
在读取文本时,FileReader的read()方法和BufferedReader的readLine()方法返回的类型不一致
FileReader的read()方法:其实读取文本的时候是一个字符一个字符的读取,并且每读取一个字符,就返回, 如果使用read(char[] temp)方法则是一个读取满一个缓存数组就返回,两个read()方法都是返回读取的个数;此时返回的int类型对应0 到 65535 之间,可转成字符。
而BufferedReader的readLine()方法:读取文本文件时每次读取是读取一行的数据。那么它内部是如何实现的呢?其实在文本文件中,比如a.txt 里面有一行abc123,但存在电脑的硬盘的形式是:abc123\r\n ,但我们无法看到\r\n字符,此是换行符。方法内部实现是每当读取到\r\n就算读取了一行文本,此时返回读取的abc123数据(不包括 \r\n)。
总结:其实readLine() 是在read()方法进行了扩展
- 黑马程序员_IO流学习第一天
- 黑马程序员--第一天学习
- 黑马程序员_java学习日记_IO流
- 黑马程序员_IO流_Properties学习
- 黑马程序员_IO流的学习
- 黑马程序员_IO流学习笔记
- 黑马程序员_IO流学习总结
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- 黑马程序员_IO流
- Linux环境进程间通信(四):信号灯
- JavaScript浏览器访问/上传本地文件
- 本人常用资源整理(ing...)
- css学习笔记——CSS 属性 选择器
- Windows Azure(世纪互联版)- 几个注意事项
- 黑马程序员_IO流学习第一天
- [LeetCode] Binary Tree Level Order Traversal
- 有关epoll的EPOLLOUT
- const关键字
- string 将指定的字符或字符串全部替换成特定的字符或字符串
- IOS7 label 宽度高度自适应
- Linux之旅(I)——Ubuntu 12.04/14.04 LTS 安装
- STM8使用----STVD(COSMIC)定义变量指定其类型和位定义
- 解析:求最大公约数的“辗转相除法原理”