问题描述
- java中的IO流使用情况
-
java中有很多读取和写入文件的操作 像FileWirter Writer Reader BufferWriter 等 我一直区分不清这几个的特点,有没有大神帮忙处理下,通常什么情况使用什么比较好。各有那些优点和缺点
解决方案
你可以上网搜索哦下,很多的
解决方案二:
有的有缓冲区,有的没有,有的没有;有的可以操纵字符文件,有的可以操纵字节文件,你可以按照这个进行分类
解决方案三:
这是我自己整理的,你可以参考下
http://blog.csdn.net/evankaka/article/details/48225085
解决方案四:
最简单的解决办法是去看JavaAPI
解决方案五:
Writer是个抽象类,不直接使用,不用理会。
FileWirter是jdk提供的便捷类,使用默认缓冲区大小(8K字符),操作字符流(字符或字符串)。
BufferWriter 与FileWirter相比,可以自定义缓冲区大小。
Reader同理。
Java常用的文件操作类在命名上有这么几个特点(以输出为例,输入同理)
1.两大分支:
(1)有Wirter的,都是操作字符流的,都是Wirter的子类。
(2)有OutputStream的,都是操作字节流的,都是OutputStream的子类。(OutputStreamWriter除外,以第1点优先)
2.有File的,是文件与各种文件操作类的衔接类。都是可以通过File对象或文件路径构建其实例,并且都是可以指定写模式(追加或覆写)。
(1)FileWriter是文件与Wirter类的衔接类
(2)FileOutputStream是文件与OutputStream类的衔接类
3.有Buffer的都是可以自定义缓冲区大小的。
(1)BufferedWriter是Buffer类与Wirter类的衔接类
(2)BufferedOutputStream是Buffer类与OutputStream类的衔接类
4.想指定编码(例如utf-8),必须用OutputStreamWriter,这是字节流与字符流的衔接类。
5.想以行为单位操作文件内容,必须使用BufferedWriter。
要想使用它们的所有特性,需要使用衔接类来嵌套以配合使用。
如你已经知道了文件名,有以下几个实例构建方案。
1.文件名→FileWriter→BufferedWriter 功能:可指定写模式,可指定缓冲区(默认8k字符),操作字符流
2.文件名→FileOutputStream→BufferedOutputStream 功能:可指定写模式,可指定缓冲区(默认8k字节),操作字节流
3.文件名→FileOutputStream→OutputStreamWriter→BufferedWriter 功能:可指定写模式,可指定编码,可指定缓冲区,操作字符流
ps:操作字节无需指定编码