• 想要知道开发时,使用哪个流对象, 只要通过四个明确即可.
  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. 测试-一个unity的编译bug,初始化器

    .net C#下测试: public class Class1 { public bool toggle1 = true; public bool toggle2; } 一个结构类Class1,对里面 ...

  2. Java 堆内存

    堆内存 Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象. 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young ).老年代 ( Old ).新生代 ...

  3. npm太慢, 淘宝npm镜像使用方法[转]

    淘宝 npm 地址: http://npm.taobao.org/ 如何使用 有很多方法来配置npm的registry地址,下面根据不同情境列出几种比较常用的方法.以淘宝npm镜像举例: 1.临时使用 ...

  4. JS——覆盖显示,点击显示三层

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  5. 缓存数据库redis、memcached。 MongoDB 资源集锦

    Redis学习资源: 1.Redis学习手册 http://www.cnblogs.com/stephen-liu74/archive/2012/03/14/2349815.html 2.c#连接Re ...

  6. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

    iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  7. 11个免费的Web安全测试工具

    1.Netsparker Community Edition(Windows) 这个程序可以检测SQL注入和跨页脚本事件.当检测完成之后它会给你提供一些解决方案. 2.Websecurify(Wind ...

  8. .NET开发笔记--对config文件的操作(2)

    1.前台代码 sys_channel_edit.aspx <tbody id="item_box"> <asp:Repeater ID="rptList ...

  9. 【BZOJ】2018: [Usaco2009 Nov]农场技艺大赛(暴力)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2018 精度问题我也是醉了.. #include <cstdio> #include &l ...

  10. iOS开发中“此证书的签发者无效”的解决方式

    iOS开发过程中有时候会出现证书所有变成无效,例如以下图 然后进行打包的时候会提演示样例如以下警告:  解决方法:  第一步: 下载https://developer.apple.com/certif ...