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

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();
	}

}

下面是操作程序的结果。

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

爱分享,爱生活。

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




你可能感兴趣的:(java,源码,字符流,IO流,缓冲区)