流的操作规律:
1.明确源和目的
源:InputStream Reader
目的:OutputStream Writer
2.明确数据是否是纯文本数据
源:是纯文本:Reader
否:InputStream

目的:是纯文本 Writer
否:OutputStream
到这里就可以明确需求中具体要使用哪个体系
3.名确具体的设备
源设备:
硬盘:File
键盘:System.in
内存:数组 缓存
网络:Socket流
目的设备:
硬盘:File
控制台:System.out
内存:数组
网络:Socket流
4.是否需要其他额外功能
(1)是否需要高效(缓冲区):是:及加上buffer
(2)转换

需求:1.复制一个文本文件。
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确具体的设备
源:
硬盘: File
目的:
硬盘:File
FileReader fr=new FileReader("a.txt")
FileWriter fw=new FiileWriter("b.txt")
4.需要额外功能
需要高效
BufferedReader bufr =new BufferedReader(new FileReader("a.txt"))
BufferedWriter bufw =new BufferedReader(new FileReader("b.txt"))
======================================================
需求2. 读取键盘录入信息,并写入到一个文件中
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确识别
源:
键盘:System.in
目的:
硬盘:File
InputStream in =System.in;
FileWriter fw =new FileWriter("b.txt")
这样做可以。将读取的字节数据转成字符串,再由字符流操作
4.需要额外的功能吗?
需要。转换。将字节流转成字符流因为明确的源是Reader,这样操作文本数据便捷
所以要将已有字节流转成字符流。使用字节转字符的对象。InputStreamReader
InputStreamReader isr=new InputStreamReader(System.in)
FileWriter fw=new FileWriter("b.txt")

还需要功能吗?
需要:想高效
BufferedReader bufr=new BufferedReader( new InputStreamReader(System.in))
BufferedWriter bufw=new BufferedWriter( new FileWriter("b.txt"))
=========================================
需求3.经一个文本文件数据显示在控制台上
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确具体设备
源:
硬盘:File
目的:
控制台:System.out
FileReader fr =new FileReader("a.txt")
OutputStream out=System.out
4.需要额外功能吗?
需要转换。
FileReader fr =new FileReader("a.txt")
OutputStreamWriter osw =new OutputStreamWriter(System.out)

=================================================
4.读取键盘录入数据,显示在控制台上
1.明确源和目的。
源:InputStream Reader
目的:OUtputStream Writer
2.是否是纯文本
是:Reader
目的:Writer
3.明确设备
源:
键盘:System.in
目的:
控制台: System.out
InputStream in=System.in;
OutputStream out =System.out;
4.明确额外功能
需要转换,因为都是字节流,但是操作的确实文本数据。
所以使用字符流操作起来干呢更加便捷。
InputStreamReader isr =new InputStreamReader(System.in);
OutputStreamReader osw =new OutStreamWriter(System.out)


======================================
需求5:将一个中文字符串数据按照指定的编码表写入到一个文本文件中

注意:既然需求中已经明确了指定的编码表动作
那就不可以使用FileWriter,因为FileWriter内部是使用默认的本地码
OutputStreamWriter接收一个字节输出流对象,既然操作文件,那么使用FileOutputStream

什么时候使用转换流?
1.源或者目的对应的设备是字节流。但是操作的确实文本数据,可以使用转换作为桥梁提高对文本操作的便捷
2.一旦操作文本设计具体的指定编码表时,必须使用转换流。

IO流(四)__流的操作规律总结的更多相关文章

  1. Java基础---IO(一)---IO流概述、字符流、字节流、流操作规律

    第一讲     IO概述 概述 1.IO流:即InputOutput的缩写. 2.特点: 1)IO流用来处理设备间的数据传输. 2)Java对数据的操作是通过流的方式. 3)Java用于操作流的对象都 ...

  2. IO流之流的操作规律

    流的操作规律 IO流中对象很多,解决问题(处理设备上的数据时)到底该用哪个对象呢? 把IO流进行了规律的总结(四个明确): l  明确一:要操作的数据是数据源还是数据目的. 源:InputStream ...

  3. Java---IO加强(3)-IO流的操作规律

    一般写关于操作文件的读取的几个通用步骤!!! 1.明确源和目的. 源:InputStream Reader 一定是被读取的. 目的:OutputStream Writer 一定是被写入的. 2.处理的 ...

  4. IO流的操作规律

    输入流和输出流相对于内存设备而言. 将外设中的数据读取到内存中:输入将内存的数写入到外设中:输出. 字符流的由来:其实就是:字节流读取文字字节数据后,不直接操作而是先查指定的编码表.获取对应的文字.在 ...

  5. Java转换流、缓冲流、流操作规律整理

    转换流 1.1                OutputStreamWriter类 OutputStreamWriter 是字符流通向字节流的桥梁:可使用指定的字符编码表,将要写入流中的字符编码成字 ...

  6. Java第三阶段学习(五、流的操作规律、Properties流、序列化流与反序列化流、打印流、commons-IO jar包)

    一.流的操作规律 四个明确: 明确一:明确要操作的数据是数据源还是数据目的地 源:InputStream   Reader 目的地:OutputStream Writer 先根据需求明确是要读还是写 ...

  7. IO流(五)__文件的递归、Properties、打印流PrintStream与PrintWriter、序列流SequenceInputStream

    一.文件的遍历 1.需求:对指定目录进行所有的内容的列出(包含子目录的内容)-文件的深度遍历 思想:递归的思想,在递归的时候要记住递归的层次. public class FileTest { publ ...

  8. -1-4 java io java流 常用流 分类 File类 文件 字节流 字符流 缓冲流 内存操作流 合并序列流

      File类 •文件和目录路径名的抽象表示形式 构造方法 •public File(String pathname) •public File(String parent,Stringchild) ...

  9. Java精选笔记_IO流(转换流、常用流、流操作规律、字符编码)

    IO流 用来处理设备之间的数据传输,java对数据的操作是通过流的方式,java用于操作流的对象都在IO包中 按操作数据分为:字节流和字符流:按流向分为:输入流和输出流. 程序从输入流中读取数据,向输 ...

随机推荐

  1. ServletConfig接口默认是哪里实现的?

    问题:Servlet接口默认是哪里实现的? 答:GenericServlet 1.结构 2.ServletConfig.GenericServlet.HttpServlet的关系如下: public ...

  2. php使用正则过滤js脚本代码实例

    匹配的规则不能用 "/<script.*<\/script>/i",因为它不能匹配到换行符,那么多行js就匹配不掉了. 要用 "/<script[ ...

  3. java坦克大战源码下载

    HJZGG:https://github.com/hjzgg/hjzgg_tank_java 解压之后运行可执行jar包即可!效果图如下: v 1.游戏开始 v 2.选择地图 v 3.开始游戏 v 4 ...

  4. WebStorm 9 自动编译 LESS 产出 CSS 和 source maps

    1.双击桌面Chrome图标,打开Chrome,按键盘“F12”键,打开开发工具界面,点击其右上角的“设置”按钮,勾选“Enable JavaScript source maps”  及“Enable ...

  5. Android通过xml文件配置数据库

    之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM ...

  6. php多进程处理

    php多进程处理 往往我们会碰到一个情况,需要写一个脚本,这个脚本要处理的数据量极大,单进程处理脚本非常慢,那么这个时候就会想到使用多进程或者多线程的方式了. 我习惯使用多进程的方式,php中使用多进 ...

  7. vim黏贴自动增加tab的毛病

    vim在ctrl + p的时候有可能会自动给你增加了个tab 很是郁闷   解决方法如下: :set noautoindent :set nosmartindent

  8. Elasticsearch 教程--入门

    1.1 初识 Elasticsearch 是一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,可以说 Lucene 是当今最先进,最高效的全功能开源搜索引擎框架. 但是 L ...

  9. js学习笔记(一)

    1.数组实用方法大全 //给数组添加个方法,返回数组中的最大值 Array.prototype.max = function() { return Math.max.apply(null,this); ...

  10. linux service命令解析

      我们平时都会用service xxx start来启动某个进程,那么它背后究竟执行了什么? 其实service的绝对路径为/sbin/service ,打开这个文件cat /sbin/servic ...