• 想要知道开发时,使用哪个流对象, 只要通过四个明确即可.
  1. 明确源和目的(数据汇)

    • 源: InputStream 或 Reader
    • 目的: OutPutStream 或 Writer
  2. 明确数据是否是纯文本数据

    • 源:

      • 是纯文本: Reader
      • 不是纯文本: InputStream
    • 目的:
      • 是纯文本: Writer
      • 不是纯文本: OutputStream
    • 到这里, 就可以明确需求中具体要使用哪个体系.
  3. 明确具体的设备, 即要明确使用哪一个对象

    • 源设备:

      • 硬盘: File
      • 键盘: System.in
      • 内存: 数组
      • 网络: Socket 流
    • 目的设备:
      • 硬盘: File
      • 键盘: System.out
      • 内存: 数组
      • 网络: Socket 流
  4. 是否需要额外的功能

    • 需要高效(缓冲区), 就加上 buffer
    • 需要转换, 就将字节流转换为字符流
// 示例: 将一个中文字符串数据按照指定的编码表写入到一个文本文件中.

    /*
* 思路:
* 1. 目的: OutputStream, Writer
* 2. 是纯文本数据: Writer
* 3. 设备: 硬盘, File
* FileWriter fw = new FileWriter("a.txt");
* fw.write("你好");
* fw.close();
* 注意:
* 既然需求中已经明确了指定编码表的动作, 那就不可以使用 FileWriter, 因为 FileWriter 内部
* 使用的是默认的本地编码表.
* 因此,只能使用其父类, OutputStreamWriter, 转换流
* OutputStreamWriter 的构造方法中必须带有一个字节输出流对象, 既然是操作文件,
* 那么该对象应该是 FileOutputStream.
*
* OutputStreamWriter osw =
* new OutputStreamWriter(new FileOutputStream("a.txt"), charsetName(编码表));
* osw.write("你好");
* osw.close();
*/
  • 什么时候使用转换流呢?

    1. 源或者目的对应的设备是字节流, 但是操作的却是文本数据, 可以使用转换流作为桥梁

      提高对文本操作的便捷
    2. 一旦操作文本涉及到具体指定的编码表时, 必须使用转换流.

参考资料

IO 流的操作基本规律的更多相关文章

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

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

  2. C# IO流的操作

    C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作. namespace ConsoleApplication1 { class P ...

  3. C# IO流的操作(一)

    C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作. namespace ConsoleApplication1 { class P ...

  4. IO流的操作规律

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

  5. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  6. Java文件IO流的操作总结

    Java中的IO操作涉及到的概念及相关类很多,很容易弄混,今天特来整理总结一下,并附上一份完整的文件操作的代码. 概念解析 读和写 流就是管道,向管道里面写数据用输出流:write 从管道里面读数据, ...

  7. IO流常规操作

    IO流 IO就是输入输出,IO设备在计算机中起着举足轻重的作用,IO流也就是输入输出流,用来交互数据,程序和程序交互,程序也可以和网络等媒介交互. 一.IO流的分类 要分类,肯定得站得不同角度来看这个 ...

  8. JAVA学习第五十一课 — IO流(五)流的操作基本规律

    转换流: InputStreamReader:字节到字符的桥梁.解码 OutputStreamWriter:字符到字节的桥梁.编码 流的基本规律 1.明白源和汇 源:InputStream.Reade ...

  9. Java语言中IO流的操作规律学习笔记

    1,明确源和目的. 数据源:就是需要读取,可以使用两个体系:InputStream.Reader: 数据汇:就是需要写入,可以使用两个体系:OutputStream.Writer: 总结: 读:就是把 ...

随机推荐

  1. GNU Linux高并发性能优化方案

    /*********************************************************** * Author : Samson * Date : 07/14/2015 * ...

  2. 如何启动mininet实例上的wireshark图形界面

    启动wireshark 要启动mininet实例上的wireshark的图形界面,其实关键点只有两个: 保证宿主机上安装了X11 使用ssh -Y mininet@192.168.56.102 登录进 ...

  3. SCUT个人整理的常见问题

    1.刚打开redis和服务端,测试时发现明显延时 刚开始会同步数据比较卡,需要进行一次操作才会同步.这个问题暂时没去研究 2.Server failed to start error:The mode ...

  4. JAVA连接各种数据库详解

    Java数据库连接(JDBC)由一组用 Java 编程语言编写的类和接口组成.JDBC 为工具/数据库开发人员提供了一个标准的 API,使他们能够用纯Java API 来编写数据库应用程序.然而各个开 ...

  5. 新标准C++程序设计读书笔记_类和对象

    面向对象的程序设计方法 抽象:将某类客观事物共同特点(属性)归纳出来,形成一个数据结构(可以用多个变量描述事物的属性):将这类事物所能进行的行为也归纳出来,形成一个个函数,这些函数可以用来操作数据结构 ...

  6. locationInView和translationInView的区别

      1  translationInView是UIPanGestureRecognizer下面的一个属性 locationInView则是UIGestureRecognizer下面的属性 2  tra ...

  7. scrapy-redis源代码分析

    原创文章,链接:http://blog.csdn.net/u012150179/article/details/38226253   +   (I) connection.py 负责依据setting ...

  8. redis存储对象与对象序列化详解

    redis主要存储类型最常用的五种数据类型: String Hash List Set Sorted set redis存储对象序列化和反序列化 首先来了解一下为什么要实现序列化 为什么要实现序列化接 ...

  9. Spring的核心机制——依赖注入(Dependency Inject)

    Spring不仅提供对象,还提供对象的属性值,而不是由使用该对象的程序所提供的. Java应用是由一些相互协作的对象所组成的,在Spring中这种相互协作的关系就叫依赖关系. 如果A组件调用了B组件的 ...

  10. 获取JQuery UI tabs中被选中的tabs的方法

    JQuery标签事件处理实例 如果你正在使用JQuery tabs而且想从基本的功能扩展到自定义的功能,这是你最好知道如何处理JQuery的点击事件. 在这篇文章中: 1.回顾如何添加当tab被点击时 ...