IO流的使用规律总结。
解决的问题,就是在开发过程中具体要使用哪个流对象的问题。
1,明确 数据源,数据汇(数据的目的)
其实就是在明确要使用的IO体系,InputStream OutputStream Reader Writer
需求中操作的是源:意味着是 读。
InputStream Reader
需求中操作的是 目的: 意味着是 写
OutputStream Writer
2,明确 操作的数据是否是存文本数据?
是
使用字符流
否
字节流
是并且是源。Reader
是并且是目的 。Writer
通过前两个明确,明确了具体要使用的体系。
接下来应该明确具体的体系中要使用哪个对象。
3,明确 要操作的具体设备。每个设备都有对应的流对象。
源设备:
硬盘,能操作File的流对象都是。File开头。、
键盘,System.in。
内存,数组。
网络,socket流。
目的设备:
硬盘,能操作File的流对象都是。File开头。、
显示器,System.out。
内存,数组。
网络,socket流。
到第三步明确就可以找到具体的流对象了。
4,要明确是否需要额外功能?
需要高效吗? 用缓冲区,Buffered开头的。
需要编码转换吗? 转换流。
------------------------------------------------------
下面通过具体的需求,来利用上面的规律来确定流对象。
需求1:通过键盘录入数据,将数据保存到一个文件中。
明确一:用源码?有, 有目的吗? 有。
源:InputStream Reader
目的:OutputStream Writer
明确二:是存文本数据吗? 是
源:Reader
目的:Writer
明确三:具体设备。
源设备:键盘, System.in
目的设备:硬盘 操作File
通过上面三步明确大致可以确认
InputStream is=System.in;//源对象
FileWriter fw=new FileWriter("a.txt");//目的对象。
//将读取的字节存储到数组中 read(byte[])
//将字节数组转换成字符串。
//通过fw.write(String)写入到文件中。
//但是这样做比较麻烦,因为要明确的源是Reader ,需要将字节流转成字符流,这样操作文字就便捷了。
明确四:需要功能吗?
需要。 转换 字节-->字符。InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in);
FileWriter fw=new FileWriter("a.txt");
//一次读取一个字符,将读到的字符写入。当然也可以定义字符数组缓冲区。
需要其他功能吗?
需要,高效。 Buffered
所以最终的流对象可以确认了。
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
BUfferedWriter bufw=new BufferedWriter(new FileWriter("a.txt"));
//line=readLine();
//bufw.write(String);bufw.flush();
下面把需求一的代码写出来以供大家学习。
package 练习;
import java.io.*;
public class keyReader {
public static void main(String[] args) throws IOException {
keyReade();
}
private static void keyReade() throws IOException {
System.out.println("请用键盘输入你要录入的信息");
//1,通过IO流操作规律明确流对象
BufferedReader bufr=new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufw=new BufferedWriter(new FileWriter("我的文件夹\\fos.txt"));
String line=null;
line=bufr.readLine();
bufw.write(line);
bufw.newLine();//换行。
bufw.flush();
/*
//想要循环的打印一行话,用下面的方法。
for(int i=1;i<5;i++){
bufw.write(line);
bufw.newLine();//换行。
bufw.flush();
}*/
bufw.close();
bufr.close();
}
}
下面是操作程序的结果。
我也是刚学不久,这些全是我自己总结的,有不足之处还望体谅。日后我会用自己有限的能力为大家做出更多的总结。
爱分享,爱生活。
