IO流操作的规律
2015-10-21 17:05
246 查看
一、IO流操作规律
1、总结
IO流操作中,首先要明确开发中具体要使用哪个流对象。2、明确流对象步骤
1,明确数据源,数据汇(数据目的)其实就是在明确要使用的IO体系。InputStream outpurStream Reader Writer
需求中操作的是源:意味着是读,
InputStream Reader
需求中操作的是目的:意味着是写
OutputStream Writer
2,明确操作的数据是否是纯文本数据
是:字符流
否:字节流
是并且是源:Reader
是并且是目的:Writer
3,明确要操作的具体设备。每个设备都有对应的流对象
源设备:
硬盘:能操作File的对象都是,File开头的
键盘:System.in
内存:数组
网络:socket流
目的设备:
硬盘:能操作File的对象都是,File开头的对象
显示器:System.out
内存:数组
网络:socket流
4、明确是否需要额外的功能
需要高效:缓冲区,Bufferd开头的
需要编码转换:转换流
二、IO流操作规律应用
1、应用一
需求:通过键盘录入数据,将数据保存到一个文件中。明确一:有源吗?有,有目的吗?有
源:InputStream Reader
目的:outStream Writer
明确二:是纯文本数据吗?是
源:Reader
目的:Writer
明确三:具体设备
源设备:键盘(System.in)
目的设备:硬盘
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"));
2、应用二
需求2:读取文本文件中的数据,将其打印到控制台上明确一:有源吗?有,有目的吗?有
源:InputStream Reader
目的:outStream Writer
明确二:是纯文本数据吗?是
源:Reader
目的:Writer
明确三:具体设备
源设备:硬盘
目的设备:显示器 (System.out)
FileReader fr = new FileReader("a.txt");
OutputStream(PrintStream) out = System.out;
//fr读取数据到数组中。
//使用PrintStream 直接调用Println方法就可以打印了,如果使用OutputStream可以调用write方法就可以将数据写入到显示器中
//麻烦
因为源都是字符数据,可以通过字符流操作,将字符流转成字节再给显示器
明确四:需要额外功能吗?
需要转换 字符-->字符
FileReader fr = new FileReader("a.txt");
OutputStreamWriter osw = new OutputStreamWriter(system.out);
还需要其它功能吗、
需要高效
BufferedReader bufr = new BufferedReader(new FileReader("a.txt"));
BufferedWriter bufw = mew BufferedWriter(new OutputStreamWriter(system.out));
//读取一行数据
//写入一行数据
相关文章推荐
- 给URL标示特别颜色
- 使用ASP.NET开发的网站,怎么把动态的页面静态化?
- bat programming is easy and powerful
- CentOS6.5中修改yum源
- oracle 中身份证号15位升18位
- 不重启的情况下清除网络共享的密码
- IOS添加计时器的两种方法
- Cpp--sizeof与strlen区别与联系
- U盘无法格式的解决办法
- Qt try catch排错历程——C++的异常对除零不起作用
- C&OC的数据类型分类
- 打印js插件
- Redis数据类型之有序集合类型--Redis系列六
- Linux的automake出现的问题(Makefile.am: C objects in subdir but `AM_PROG_CC_C_O' not in `configure.ac')
- CFileDialog会自动更改程序当前工作目录(解决方案)!
- C语言数组练习
- 使用UITabBarViewCOntroller时隐藏tabbar
- Ubuntu下usb设备读写权限设置
- JavaScript中JSON使用
- ios代码编写UIButton,设置图片,图片不显示