您的位置:首页 > 编程语言 > Java开发

java提高篇(一)拓展篇 java知识汇总---IO流的使用规律总结(含代码示例)浅显易懂

2014-08-04 21:36 691 查看
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();
}

}


下面是操作程序的结果。

我也是刚学不久,这些全是我自己总结的,有不足之处还望体谅。日后我会用自己有限的能力为大家做出更多的总结。

爱分享,爱生活。



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: