流的操作规律:
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. 了解HTML表单之input元素的23种type类型

    目录 传统类型 text password file radio checkbox hidden button image reset submit 新增类型 color tel email url ...

  2. Moon River

    读书笔记系列链接地址http://www.cnblogs.com/shoufengwei/p/5714661.html.        昨晚无意中听到了一首英文歌曲,虽不知其意,但是瞬间就被优美的旋律 ...

  3. Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建

    [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...

  4. Android中Services之异步IntentService

    IntentService:异步处理服务,新开一个线程:handlerThread在线程中发消息,然后接受处理完成后,会清理线程,并且关掉服务. IntentService有以下特点: (1)  它创 ...

  5. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  6. redis学习教程之一基本命令

    参阅redis中文的 互动教程(interactive tutorial)来学习的. 目录: 全局操作 get  get incr  自增 del 删除 expire 定时 list  队列 set ...

  7. C语言学习020:可变参数函数

    顾名思义,可变参数函数就是参数数量可变的函数,即函数的参数数量是不确定的,比如方法getnumbertotal()我们即可以传递一个参数,也可以传递5个.6个参数 #include <stdio ...

  8. VS自动生成的packages.config配置文件有什么用?

    通过nuget管理安装了程序包之后,Visual Studio会自动生成一个关于这些程序包版本的配置文件,删除或者保留它对程序不会造成什么影响.

  9. EasyUI的datagrid分页

    EasyUI的datagrid分页 前台代码: <script type="text/javascript"> $(function () { //查询 search( ...

  10. 九个Console命令,让js调试更简单

    一.显示信息的命令 最常用的就是console.log了. 二.占位符 console上述的集中度支持printf的占位符格式,支持的占位符有:字符(%s).整数(%d或%i).浮点数(%f)和对象( ...