java I/O 流的操作规律 小结
来源:互联网 发布:android手机装linux 编辑:程序博客网 时间:2024/05/30 05:05
IO流的操作规律
1、明确源和目的。
源:InputStream Reader 一定是被读取的。
目的:OutputStream Writer 一定是被写入的。
2、处理的数据是否是纯文本的数据?
是:使用字符流。Reader Writer
否:使用字节流。 InputStream OutputStream
3、明确数据所在的设备
源设备:
键盘(System.in)
硬盘(FileXXX)FileReader FileInputStream
内存(数组)ByteArrayInputStream CharArrayReader StringReader
网络(Socket)
目的设备:
显示器(控制台System.out)
硬盘(FileXXX)FileWriter FileOutputStream
内存(数组)ByteArrayOutputStream CharArrayWriter StringWriter
网络(Socket)
4、明确是否需要额外功能?
1) 是否需要高效?缓冲区Buffered (字符与字节各两个)。
2) 是否需要转换?转换流 InputStreamReader OutputStreamWriter
3) 是否操作基本数据类型? DataInputStream DataOutputStream
4) 是否操作对象(对象序列化)? ObjectInputStream ObjectOutputStream
5) 需要对多个源合并吗? SequenceInputStream
6) 需要保证数据的表现形式到目的地吗? PrintStream 或 PrintWriter
另外:如果数据有规律,并且源和目的都是file,需要随机访问时,可以使用RandomAccessFile工具类。
下面我们来通过几个案例分析一下怎么选择流:
需求1:复制一个文本文件。
1、明确源和目的。
源:InputStream Reader
目的:OutputStream Writer
2、处理的数据是否是纯文本的数据?
源:Reader
目的:Writer
3、明确数据所在的设备。
源:file(硬盘) FileReader fr = new FileReader("a.txt");
目的:file(硬盘) FileWriter fw = new FileWriter("b.txt");
4、明确是否需要额外功能?
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bufw = new BufferedWriter(new FileWriter("b.txt"));
需求2:复制一个图片文件。
1、明确源和目的。
源:InputStream Reader
目的:OutputStream Writer
源:InputStream
目的:OutputStream
3、明确数据所在的设备。
源:file(硬盘) FileInputStream fin = new FileInputStream("1.jpg");
目的:file(硬盘) FileOutputStream fout = new FileOutputStrema("2.jpg");
4、明确是否需要额外功能?
BufferedInputStream bufin = new BufferedInputStream( fin );
BufferedOutputStream bufout = new BufferedOutputStream( fout );
需求3:读取键盘录入,存储到一个文件中。
1、明确源和目的。
源:InputStream Reader
目的:OutputStream Writer
2、处理的数据是否是纯文本的数据?
源:Reader
目的:Writer
3、明确数据所在的设备。
源:键盘
目的:硬盘
4、明确是否需要额外功能?
将键盘录入的字节转成字符。需要将字节-->字符的转换流。InputStreamReader。还想需要高效。
InputStreamReader isr = new InputStreamReader(System.in);
FileWriter fw = new FileWriter("a.txt");
BufferedReader bufr = new BufferedReader( isr);
BufferedWriter bufw = new BufferedWriter( fw );
需求4:读取一个文本文件,显示到显示器上。
1、明确源和目的。
源:InputStream Reader
目的:OutputStream Writer
2、处理的数据是否是纯文本的数据?
源:Reader
目的:Writer
源:硬盘
目的:显示器
4、明确是否需要额外功能?
将字符数据转换成字节输出。输出转换流:OutputStreamWriter。还想需要高效。
FileReader fr = new FileReader("a.txt");
OutputStreamWriter osw = new OutputStreamWriter(System.out);
BufferedReader bufr = new BufferedReader( fr);
BufferedWriter bufw = new BufferedWriter( osw )
需求5:读取一个文本文件,将文本按照指定的编码表UTF-8写入到另一个文件中。
1、明确源和目的。
源:InputStream Reader
目的:OutputStream Writer
2、处理的数据是否是纯文本的数据?
源:Reader
目的:Writer
3、明确数据所在的设备。
源:file(硬盘) FileReader fr = new FileReader("a.txt");
目的:file(硬盘) FileWriter fw = new FileWriter("b.txt");
输出时要为字符数据指定编码表。转换流中的参数需要字节流,因此用FileOutputStream。转换流:OutputStreamWriter,还想需要高效。
FileReader fr = new FileReader("a.txt");
OutputStreamWriter osw = new OutputStreamWriter(fout,”utf-8”);
BufferedReader bufr = new BufferedReader( fr);
BufferedWriter bufw = new BufferedWriter( osw );
- java I/O 流的操作规律 小结
- I/O流操作规律
- java I/O流 小结
- Java I/O流小结
- Java I/O 技术(七)—— 流操作规律总结
- JAVA I/O小结
- Java I/O小结
- java的I/O操作
- Java的I/O操作
- Java的I/O操作
- Java I/O流操作
- java中的I/O流小结
- Java I/O流常用类小结
- Java之I/O流小结
- 黑马程序员-Java I/O流(一)-IO流概述、字符流、字节流、流操作规律
- I/O流的梳理和小结
- I/O流的梳理和小结
- JAVA I/O操作
- AndroidStudio查看方法注释
- android 设置细文字体。
- 开放封闭原则(ocp)
- CentOS下CDH5.8.2本地包安装
- JQuery中Ajax的Post提交中文乱码、windows.location.href 中文汉字乱码和springmvc使用原生态HttpServletRequest接收参数中文乱码解决办法
- java I/O 流的操作规律 小结
- python笔记
- netty
- Atcoder 080 E
- 关于自动化的一点想法
- 解决tomcat每次重启丢失项目文件的问题
- Unity 回合制战斗系统(初级篇)
- 2017百度之星初赛:A-1001. 小C的倍数问题
- git学习笔记