IO流 选取

import java.io.*;




/*流操作的基本规律
最痛苦的就是流对象有很多,不知道该用哪一个。

通过明确三个来完成。
1*.明确源和目的
	源:输入流 InputStream   Reader
	目的:输出流 OutputStream   Writer
2*.操作的数据是否是纯文本。
	操作的数据是纯文本:字符流
	操作的数据不是纯文本:字节流

3.当体系明确后,在明确要使用哪个具体的对象。
通过设备来进行区分。
源设备包括:内存,硬盘,键盘。
目的设备:内存,硬盘(文件),控制台

通过以下练习来巩固:
1.将一个文本件数据存储到另一个文件中。(即复制文件)
	源:因为是源所以使用读取流 :InputStream或Reader.
	是不是操作文本文件:是!这时选择Reader。
	这样体系就明确了。

	接下来明确对象,明确要使用体系中的哪个对象。
	明确设备:硬盘上的一个文件。
	Reader体系中可以操作文件的对象是FileReader
	是否需要提高效率:是!加入Reader体系中的缓冲区  BufferedReader
	
	FileReader fr=new FileReader("a.txt");
	BufferedReader br=new BufferedReader(fr)  ------>写成一句的话可以这么写:BufferedReader br=new BuffereReader(new FileReader("a.txt"));


	
	目的:OutputStream , Writer
	目的是否是纯文本的? 是。Writer.
	明确设备:硬盘,一个文件。
	Writer体系中可以操作文件对象的是FileWriter.
	 
	FileWriter fw=new FileWriter("b.txt");
	BufferedWiter bw=new BufferdWriter(fw);


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



1.将一个图片文件数据存储到另一个文件中,按照以上三个格式:(自己做的)

	源:因为是源所以使用读取流 :InputStream或Reader.
	是不是操作文本文件:不是!这时选择InputStream.
	这样体系就明确了。

	接下来明确对象,是硬盘上的一个文件,对象即:FileInputStream 

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

2.需求:将键盘录入的数据保存到一个文件中。
  这个需求中 有源和目的分别都存在。
  源:InputStream 和Reader 
  是不是纯文本。是! 选择Reader。

  设备:键盘。对应的的对象即 System.in
  不是选择Reader吗? System.in对应的不是字节流吗?
  为了操作键盘的文本数据方便,转成字符流。字符串操作最方便。
  所以既然明确了Reader,就将System.in转成字符流用到了,
  用到了Reader体系中的转换流:InputStreamReader

  InputStreamReader isr=new InputStreamReader(System.in);
   
  需要提高效率吗? 可以使用缓冲  BufferedReader 

  BufferedReader br=new BufferedReader(isr);


 目的 OutputStream, Writer 
 是否是纯文本? 是 ! Writer
 设备:硬盘文件。
 使用FileWriter

 FileWriter fw=new FileWriter("c.txt");
 需要提高效率吗? 需要 BufferedWriter
 BufferedWriter bw=new BufferedWriter(fw);

******************************************************************************
 扩展一下,想要把录入的数据按照指定的编码表(utf-8),将数据存到文件中
 
 目的 OutputStream, Writer 
 是否是纯文本? 是 ! Writer
 设备:硬盘文件。
 使用FileWriter
 但是存储时需要加入指定编码表,而指定的编码表只有转换流可以指定。
 所以要使用使用的对象是OutputStreamWriter.
 而该转换流对象,要接收一个字节输出流。而且还可以操作文件的字节输出流。FileOutputStream

 OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("d.txt"),"utf-8");
 
  需要高效的 , BufferedWriter


  转换流,什么时候用呢?字符和字节间的桥梁。通常涉及到字符编码转换时。需要用到转换流


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



练习:将一个文本数据打印在控制台上,要按照以上格式自己完成三个明确。


*/
class WriteDemo1
{
	public static void main(String [] args)throws IOException
	{
		BufferedReader br=
			new BufferedReader (new InputStreamReader(new FileInputStream("e:\\Copy.txt")));

		BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

		String s=null;

		while((s=br.readLine())!=null)
		{
			bw.write(s);
			bw.newLine();
			bw.flush();
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值