IO流使用与总结

 流的操作规律

IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢?  

IO流进行了规律的总结(四个明确)

l 明确一:要操作的数据是数据源还是数据目的。

源:InputStream    Reader

目的:OutputStream Writer

先根据需求明确要读,还是要写。

 

l 明确二:要操作的数据是字节还是文本呢?

源:

字节:InputStream

文本:Reader

目的:

字节:OutputStream

文本:Writer

已经明确到了具体的体系上。

 

l 明确三:明确数据所在的具体设备。

源设备:

硬盘:文件  File开头。

内存:数组,字符串。

键盘:System.in;

网络:Socket

目的设备:

硬盘:文件  File开头。

内存:数组,字符串。

屏幕:System.out

网络:Socket

完全可以明确具体要使用哪个流对象。

 

l 明确四:是否需要额外功能呢?

额外功能:

转换吗?转换流。InputStreamReader OutputStreamWriter

高效吗?缓冲区对象。BufferedXXX

     InputStream

       FileInputStream

       BufferedInputStream

 

OuputStream

   FileOutputStream

   BufferedOuputStream

 

 

Writer

  OutputStreamWriter

     FileWriter

      BufferedWriter

 

Reader

  InputStreamReader

     FileReader

 BufferedReader

 

总结

知识点总结

l 字节流

字节输入流 InputStream

l FileInputStream 操作文件的字节输入流

l BufferedInputStream高效的字节输入流

字节输出流 OutputStream

l FileOutputStream 操作文件的字节输出流

l BufferedOutputStream 高效的字节输出流

l 字符流

字符输入流 Reader

l FileReader 操作文件的字符输入流

l BufferedReader 高效的字符输入流

l InputStreamReader 输入操作的转换流(把字节流封装成字符流)

字符输出流 Writer

l FileWriter 操作文件的字符输出流

l BufferedWriter 高效的字符输出流

l OutputStreamWriter 输出操作的转换流(把字节流封装成字符流)

 

l 方法:

l 读数据方法:

l read() 一次读一个字节或字符的方法

l read(byte[]  char[]) 一次读一个数组数据的方法

l readLine() 一次读一行字符串的方法(BufferedReader类特有方法)

l readObject() 从流中读取对象(ObjectInputStream特有方法)

l 写数据方法:

l write(int) 一次写一个字节或字符到文件中

l write(byte[] char[]) 一次写一个数组数据到文件中

l write(String) 一次写一个字符串内容到文件中

l writeObject(Object ) 写对象到流中(ObjectOutputStream类特有方法)

l newLine() 写一个换行符号(BufferedWriter类特有方法)

 

l 向文件中写入数据的过程

1,创建输出流对象

2,写数据到文件

3,关闭输出流

l 从文件中读数据的过程

1, 创建输入流对象

2, 从文件中读数据

3, 关闭输入流

 

l 文件复制的过程

1, 创建输入流(数据源)

2, 创建输出流(目的地)

3, 从输入流中读数据

4, 通过输出流,把数据写入目的地

5, 关闭流

OutputStreamWriter例子

public class OutputStreamWriterDemo {
					public static void main(String[] args)throws IOException {
				//		writeGBK();
						writeUTF();
					}
					/*
					 * 转换流对象OutputStreamWriter写文本
					 * 采用UTF-8编码表写入
					 */
					public static void writeUTF()throws IOException{
						//创建字节输出流,绑定文件
						FileOutputStream fos = new FileOutputStream("c:\\utf.txt");
						//创建转换流对象,构造方法保证字节输出流,并指定编码表是UTF-8
						OutputStreamWriter osw = new OutputStreamWriter(fos,"UTF-8");
						osw.write("你好");
						osw.close();
					}
					
					/*
					 * 转换流对象 OutputStreamWriter写文本
					 * 文本采用GBK的形式写入
					 */
					public static void writeGBK()throws IOException{
						//创建字节输出流,绑定数据文件
						FileOutputStream fos = new FileOutputStream("c:\\gbk.txt");
						//创建转换流对象,构造方法,绑定字节输出流,使用GBK编码表
						OutputStreamWriter osw = new OutputStreamWriter(fos);
						//转换流写数据
						osw.write("你好");
						
						osw.close();
					}
				}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值