黑马程序员 Java基础知识总结-IO流(应用总结)
2014-05-19 19:56
645 查看
java提供的IO流对象很多,有时候甚至不知道去使用哪一个。下面对java的io流对象操作作为总结:
(1)、明确源和目的
源:输入流InputStream Reader
目的:输出流OutputStream Writer
(2)、操作的数据是否是纯文本
是:字符流 Reader Writer
不是:字节流 InputStream OutputStream
(3)、当体系明确后,再明确要使用那个具体的对象
通过设备来进行区分:
源设备:内存 硬盘 键盘
目的设备:内存 硬盘 控制台
例:
需求:将一个文本文件中数据存储到另一个文件中。复制文件
源:因为是源,所以使用读取流。InputStream Reader
是否是纯文本文件:是,所以使用 Reader。
接下来明确要使用该体系中的那个对象:
明确设备,硬盘,一个文件。
Reader体系中可以操作文件的是,FileReader。
是否需要提高效率?
BufferedReader
目的:因为是目的,所以使用写入流。OutputStream Writer
是否是纯文本文件:是,所以使用 Writer。
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter
需求:将键盘录入的数据保存到一个文件中
这个需求中有源和目的都存在,那么分别分析
源:因为是源,所以使用读取流。InputStream Reader
是否是纯文本文件:是,所以使用 Reader。
接下来明确要使用该体系中的那个对象:
明确设备,键盘。对应的对象是System.in。
不是选择Reader吗?System.in 对应的不是字节流吗?
为了操作键盘的文字数据方便,字节流可以转换成字符流,按照字符串操作最方便。
既然明确了Reader 就将 System.in 转换成Reader
用到了Reader 体系中的转换流,InputSteamReader
需要提高效率吗?需要,BufferedReader
目的:因为是目的,所以使用写入流。OutputStream Writer
是否是纯文本文件:是,所以使用 Writer。
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter
扩展
想要把录入的数据按照指定的编码表(UTF-8),将数据存到文件中,使用转换流,里面可以指定编码。
目的:OutputStream Writer
是否是纯文本?是,Writer
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
但是存储时,需要加入指定的编码表,而指定的编码表,只有转换流可以指定。
所以要使用的对象是OutputStreamWriter.
而该转换流对象要接收一个字节输出流。
而且还可以操作文件的字节输出流,FileOutputStream
是否需要提高效率?需要。BufferedWriter
所以,记住,转化暖流什么时候使用,字符和字节之间的桥梁,通常,涉及到字符编码转换时,需要用到转换流。
IO流(改变标准输入输出设备)
(1)、明确源和目的
源:输入流InputStream Reader
目的:输出流OutputStream Writer
(2)、操作的数据是否是纯文本
是:字符流 Reader Writer
不是:字节流 InputStream OutputStream
(3)、当体系明确后,再明确要使用那个具体的对象
通过设备来进行区分:
源设备:内存 硬盘 键盘
目的设备:内存 硬盘 控制台
例:
需求:将一个文本文件中数据存储到另一个文件中。复制文件
源:因为是源,所以使用读取流。InputStream Reader
是否是纯文本文件:是,所以使用 Reader。
接下来明确要使用该体系中的那个对象:
明确设备,硬盘,一个文件。
Reader体系中可以操作文件的是,FileReader。
是否需要提高效率?
BufferedReader
目的:因为是目的,所以使用写入流。OutputStream Writer
是否是纯文本文件:是,所以使用 Writer。
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter
需求:将键盘录入的数据保存到一个文件中
这个需求中有源和目的都存在,那么分别分析
源:因为是源,所以使用读取流。InputStream Reader
是否是纯文本文件:是,所以使用 Reader。
接下来明确要使用该体系中的那个对象:
明确设备,键盘。对应的对象是System.in。
不是选择Reader吗?System.in 对应的不是字节流吗?
为了操作键盘的文字数据方便,字节流可以转换成字符流,按照字符串操作最方便。
既然明确了Reader 就将 System.in 转换成Reader
用到了Reader 体系中的转换流,InputSteamReader
需要提高效率吗?需要,BufferedReader
目的:因为是目的,所以使用写入流。OutputStream Writer
是否是纯文本文件:是,所以使用 Writer。
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
是否需要提高效率?需要。BufferedWriter
扩展
想要把录入的数据按照指定的编码表(UTF-8),将数据存到文件中,使用转换流,里面可以指定编码。
目的:OutputStream Writer
是否是纯文本?是,Writer
接下来明确要使用该体系中的那个对象:
明确目的,硬盘,一个文件。
Writer 体系中可以操作文件的是,FileWriter。
但是存储时,需要加入指定的编码表,而指定的编码表,只有转换流可以指定。
所以要使用的对象是OutputStreamWriter.
而该转换流对象要接收一个字节输出流。
而且还可以操作文件的字节输出流,FileOutputStream
是否需要提高效率?需要。BufferedWriter
所以,记住,转化暖流什么时候使用,字符和字节之间的桥梁,通常,涉及到字符编码转换时,需要用到转换流。
IO流(改变标准输入输出设备)
相关文章推荐
- 黑马程序员 Java基础知识总结-IO流
- 黑马程序员_06Java_IO流知识总结
- 黑马程序员_java基础知识学习总结二
- 黑马程序员学习log第七篇基础知识:JAVA的面向对象之GUI总结
- 黑马程序员学习log第九篇基础知识:JAVA的面向对象之正则表达式及反射总结
- 黑马程序员-Java基础总结11——IO流(二)
- 黑马程序员 Java自学总结一 Java语言的基础知识
- 黑马程序员_java基础知识学习总结四
- 黑马程序员 Java基础知识总结-运算类型
- 黑马程序员---Java基础总结--IO流
- 黑马程序员学习log第六篇基础知识:JAVA的面向对象之IO总结
- 黑马程序员-----java基础语法知识总结*
- 黑马程序员_java基础知识学习总结一
- 黑马程序员 Java基础知识总结-j集合框架
- 黑马程序员_Java编程学习日记01(开博之言、java编程基础知识总结)
- 黑马程序员学习log第五篇基础知识:JAVA的面向对象之集合总结
- 黑马程序员_java基础知识学习总结三
- 黑马程序员:Java基础总结----递归的应用&File流的应用
- 黑马程序员--java基础总结--基本知识
- 黑马程序员 Java基础知识总结-多线程