黑马程序员-流的选用
来源:互联网 发布:java base64 byte数组 编辑:程序博客网 时间:2024/06/16 20:48
------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------
流对象最痛苦的就是很多流对象 不知道使用那一个来完成操作,我们需要通过三个明确来确定究竟使用那个对象实现我们的功能1.明确源和目的
源:输入流 InputStream Reader
目的:输出流 OutputStream Writer
2.明确操作是不是纯文本
是:用字符流
不是:字节流
3.体系明确后,再明确要使用那个具体的对象
通过设备来进行区分:
源设备:内存、硬盘、键盘
目的设备:内存、硬盘、控制台
eg1,将一个文本文件中的数据存储到另一个文件中,复制文件
源:因为是源 所以使用读取流 InputStream Reader
是否为操作文本文件 :是
选择使用Reader
这样体系就明确了
接下来明确要使用该体系中的那个对象
明确设备:硬盘。上的一个文件
Reader体系总可以操作文件的对象为FileReader
是否需要提高效率:是 !加入Reader体系中的缓冲区 BufferedReader
FileReader = new FileReader("a.txt");
BufferedReader = new BufferedReader(fr);
目的:文件 OutputStream Writer
是否为纯文本: 是 Writer
设备:硬盘 一个文件
Writer中可以操作文件的对象为FileWriter
是否需要提高效率:是 !加入Writer体系中的缓冲区 BufferedWriter
FileWriter fw = new FileWriter("b.txt");
BufferedWriter = new BufferedWriter(fw);
需求:将一个图片文件中的数据存储到另一个文件中 复制文件
按照以上格式 完成以上三个明确
1.明确源:文件输入流 用InputStream Reader
是否为纯文本:否 用InputStream
源设备:硬盘 用FileInputStream
是否需要提高效率:是
BufferedInputStream
2.明确目的:文件 输出流 用OutputStream Writer
是否为纯文本:否 用OutputStream
目的设备:硬盘
是否需要提高效率:是
BufferedOutputStream
通过三个明确我们可以准确的定位选择究竟使用那个流对象,也就明白了如何操作文件
下面是一个小例子的具体实现:
题目要求:将键盘录入的数据保存到一个文件中
(1)源:输入流 用InputStream Reader
是否为纯文本 是 用Reader 由于下面用的System.in 返回是一个InputStream 所以这里用InputStreamReader
设备:键盘录入 用System.in
是否需要提高效率:是
用BufferedReader
(2)目的:输出流 用OutputStream Writer
是否为纯文本: 是 用Writer
设备:硬盘 用FileWriter
是否需要提高效率 是
用BufferedWriter
package com.chuanzhi.io.stream;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;public class TransStreamDemo {public static void main(String[] args) {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = null;String line = null;try {bw = new BufferedWriter(new FileWriter("out.java"));while((line = br.readLine()) != null){if("over".equals(line))break;bw.write(line);bw.newLine();}} catch (IOException e) {e.printStackTrace();}finally{if(bw != null){try {bw.close();} catch (IOException e) {e.printStackTrace();}}try {br.close();} catch (IOException e) {e.printStackTrace();}}}}
- 黑马程序员-流的选用
- (黑马程序员)IO流体系选用总结
- 黑马程序员---C#中各种数据结构的选用,及其相互转换
- 传感器的选用
- 加工中心的选用
- 可转位刀具的选用
- 可转位车孔刀的选用要点
- 各种容器的选用
- 日期字段的选用
- 数据结构的选用之一
- 外语教材的选用
- 容器的选用
- 选用合适的win7
- 晶体管的选用经验
- 外贸企业财务软件的选用
- 顺序文件的选用
- 磁珠的选用
- 磁珠(FB)的选用
- Myeclipse代码debug调试
- QML类型说明-DelegateModel
- 博客开篇
- android bluetooth UUID蓝牙查询表
- jquery向上向下取整
- 黑马程序员-流的选用
- 模块间接口调用的方式——回调
- C语言--函数
- QML类型说明-DelegateModelGroup
- web面试题
- 1116: Kingdoms+csuoj+暴力枚举+最小生成树
- 使用ASP.NET创建WEBSERVICE服务
- Android应用开发笔记(11):Android上的蓝牙通信功能的开发:BluetoothChat例程分析
- Spark学习笔记-KNN算法实现