字符流、字节流的两个顶层父类:

1.字符流:Reader、Writer

2.字节流:InputStream、OutputStream


下面图片为IO常用流之间的关系:(还有部分流没写,有兴趣的自己研究)

IO流学习总结

----------------------------------------------------------------------------------------------------------

IO中的流那么多,我们该用什么流进行开发呢?

其实掌握IO流规律就行了:

1,明确源和目的(汇)
源:InputStream Reader
目的:OutputStream Writer


2,明确数据是否是纯文本数据。
源:是纯文本:Reader
否:InputStream
目的:是纯文本 Writer
否:OutputStream


到这里,就可以明确需求中具体要使用哪个体系。


3,明确具体的设备。
源设备:
硬盘:File
键盘:System.in
内存:数组
网络:Socket流


目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流


4,是否需要其他额外功能。
1,是否需要高效(缓冲区);
是,就加上buffer
2,转换。
便于操作


----------------------------------------------------------------------------------------------------------------------

需求1:将e:盘下的mv复制到d:盘

分析:

1.明确源和目的(汇)

Inputstream OutputStream

2.明确数据是否是纯文本数据

Inputstream OutputStream

3.明确具体的设备。

源:硬盘File               目的:硬盘File

4.是否要其他功能

要高效   buffer

BufferedInputStream bufis = new BufferedInputStream(new FileInputStream(("e:\\全世界谁倾听你.mkv"));

BufferedOutputStream bufos = new BufferedOutputStream(new FileOutputStream(("d:\\全世界谁倾听你.mkv")));

int len = 0;

while((len = bufis.read())!=-1){

bufos.write(len);

}

bufos.close();
bufis.close();


2.需求2:在控制台输入,打印到e:demo.txt文件中

分析:

1.明确源和目的(汇)

Inputstream OutputStream

2.明确数据是否是纯文本数据

Inputstream OutputStream

3.明确具体的设备。

源:控制台system.in              目的:硬盘File

4.是否要其他功能

要高效   buffer

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(new FileInputStream("e:b.txt")));

while((line=bfr.readLine())!=null){
if("over".equals(line)){
break;
}
bfw.write(line.toUpperCase());
bfw.newLine();
bfw.flush();
}

相关文章:

猜你喜欢
  • 2021-05-30
  • 2021-09-11
  • 2021-08-07
  • 2021-04-06
相关资源
相似解决方案