JavaSE学习之IO流使用技巧
来源:互联网 发布:网页小游戏源码 编辑:程序博客网 时间:2024/06/11 02:12
学习过java的小伙伴和将要学习java的小伙伴,都会遇到java中很重要的一块内容,即IO流。翻开java工具书可以发现IO流中有很多类,那么问题来了,就是,开发时该用哪个对象合适呢?或者如何选择使用对象呢?下面笔者根据自己的经验跟各位小伙伴分享下。
第一步,首先,明确IO流中有两个主要的体系,即字节输入流(InputStream)、输出流(OutputStream)和字符输入流(Reader)、输出流(Writer)。其次,明确数据的来源和数据将要到达的目的地。
第二步,明确将要操作的数据是否是纯文本数据。如果数据源是纯文本数据选Reader;数据源不是纯文本数据选择InputStream。如果数据目的地是纯文本数据就选择Writer;如果不是则选择OutputStream。
- 数据源:
是纯文本:Reader
不是纯文本:InputStream - 数据目的地:
是纯文本:Writer
不是纯文本:OutputStream
第三步,明确具体的设备。即数据源是从哪个设备来的:是硬盘就加File;是键盘用System.in(是一个InputStream对象);是内存用数组;是网络用Socket流。同样目的是哪个设备:是硬盘就加File;是键盘用System.out(是一个OutoutStream对象);是内存用数组;是网络用Socket流。
明确设备:
- 数据源:
- 键盘:System.in
- 硬盘:FileXXX
- 内存:数组
- 网络:socket socket.getInputStream();
- 数据汇:
- 控制台:System.out
- 硬盘:FileXXX
- 内存:数组
- 网络:socket socket.getOutputStream();
第四步,明确是否还需要其他额外功能呢,例如①是否需要较高的效率,即是否需要使用缓冲区,是就加上Buffered;②是否需要转换,是,就使用转换流,InputStreamReader 和OutputStreamWriter。
明确额外功能:
1. 需要转换?是,使用转换流。InputStreamReader 和 OutputStreamWriter
2. 需要高效?是,使用缓冲区。Buffered
通过上面的四步走基本就可以确定该用哪个类了。如果小伙们看了上面讲解,还是有点似懂非懂,那么,接下来大家可以看看下面的例子。把上面的四步走带入走一遍,应该就可以相当清楚了。例子如图所示。
需求:复制一个文本文件。
1. 明确体系:
源:InputStream,Reader
目的:OutputStream,Writer
2. 明确数据:
源:是纯文本吗?是 Reader
目的:是纯文本吗?是 Writer
3. 明确设备:
源:硬盘上的一个文件。FileReader
目的:硬盘上的一个文件。FileWriter
FileReader fr = new FileReader(“a.txt”);
FileWriter fw = new FileWriter(“b.txt”);
4. 需要额外功能吗?
需要,高效,使用buffer
BufferedReader bufr = new BufferedReader(new FileReader(“a.txt”));
BufferedWriter bufw = new BufferedWriter(new FileWriter(“b.txt”));
读取磁盘录入,将数据存入到一个文件中。
1. 明确体系:
源:InputStream,Reader
目的:OutputStream,Writer
2. 明确数据:
源:是纯文本吗?是 Reader
目的:是纯文本吗?是 Writer
3. 明确设备:
源:键盘,System.in
目的:硬盘,FileWriter
InputStream in =System.in;
FileWriter fw = new FileWriter(“a.txt”);
4. 需要额外功能吗?
需要,英文源明确的体系时Reader,可是源的设备是System.in。
所以为了方便于操作文本数据,将源转成字符流。需要转换流。InputStreamReader
InputStreamReader inr = new InputStreamReader(System.in);
FileWriter fw = new FileWriter(“a.txt”);
需要高效不?需要。Buffer
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw = new BufferedWriter(new FileWriter(“a.txt”));
注:上面讲的规律适用于IO流中比较常用的类,当然还有其他一些类需要大家个别掌握。
- JavaSE学习之IO流使用技巧
- 黑马程序员-javaSE学习之IO流
- JavaSE学习笔记之-----IO流
- JAVASE之IO流
- JAVASE之IO流
- javaSE学习笔记之IO
- JavaSE学习笔记之IO
- JavaSE 学习参考:IO流之字节流
- Javase基础学习笔记之IO流(1)
- Javase基础学习笔记之IO流(2)
- Javase基础学习笔记之IO流(3)
- Javase基础学习笔记之IO流(4)
- 学习笔记之JavaSE(39)--IO流1
- 学习笔记之JavaSE(40)--IO流2
- 学习笔记之JavaSE(41)--IO流3
- 学习笔记之JavaSE(42)--IO流4
- 学习笔记之JavaSE(43)--IO流5
- 学习笔记之JavaSE(44)--IO流6
- python使用selenium调用edge浏览器webdriver
- 【MySQL-性能优化】--MySQL外键约束简述
- bzoj 3709: [PA2014]Bohater 贪心
- 基于tp5文件上传到七牛云的插件
- 写给初学者26_android_数据持久化_LitePal_更简单的数据库操作
- JavaSE学习之IO流使用技巧
- Bone Collector hdu2602(经典dp)01背包
- 用socket实现客户端与服务器端的通信,要求在客户发送数据后能够回显相同的数据。
- 猴子分桃
- 初识注解
- <1>TCP带宽测试试验
- linux中怎么解压.tgz与.tar.gz文件
- JZOJ 4.22 2132——【2017.4.21普及】架设电话线
- Leveraging weak learners via adaptive boosting(AdaBoost)