主要内容:

一.输入流基类:InputStream 和 OutputStream(字节流)、 Reader 和 Writer(字符流)

二.文件字节流:FileInputStream和FileOutputStream

三.转换流(字节流-->字符流):InputStreamReader 和 OutputStreamWriter、FileReader 和 FileWriter

四.缓冲流:BufferedInputStream、BufferedOutputStream 和 BufferedReader、BufferedWriter

(以下内容等待更新……)

五.数据流:DataInputStream 和 DataOutputStream

六.标准输入输出流: System.in 和 System.out

七.对象流:ObjectInputStream和OjbectOutputSteam

一.输入流基类:InputStream 和 OutputStream(字节流)、 Reader 和 Writer(字符流)

在Java中,所有的I/O类都来源于这四个抽象类,其中InputStream 和 OutputStream为字节流输入输出(二进制I/O),Reader和Writer为字符流输入输出(文本I/O)。

二.文件字节流:FileInputStream和FileOutputStream

可知,文件中的内容由最基本的字节组成。如果我们要获取里面的内容,首先就要以字节的形式去获取:

三.转换流(字节流-->字符流):InputStreamReader 和 OutputStreamWriter、FileReader 和 FileWriter

首先要明白两个概念,编码与编码格式:

1.Unicode是一种“编码”,所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成一个很大的对应表格。

2.GBK、UTF-8是一种“编码格式”,是用来序列化或存储1中提到的那个“编号(数字)”的一种“格式”;GBK和UTF-8都是用来序列化或存储Unicode编码的数据的,但是分别是2种不同的格式。

3.在内存中,即在Java虚拟机上,字符是有“编码”而没有“编码格式”的,其“编码”为Unicode。相反,在磁盘,即文件上,字符是没有“编码”但有“编码格式”的,为“UTF-8”或“GBK”等。

(以上内容来自:java中的编码和编码格式问题

所以,磁盘中的内容是经过了“UTF-8”或“GBK”的编码的,为了从磁盘中读取这些内容:

1)先利用FileInputStream读出字节流,

2)然后再根据编码格式利用InputStreamReader进行解码,最后得到Unicode。

这样Java就能够识别是哪个字符了(123.txt的编码格式是utf-8)。

对于FileReader 和 FileWriter,他们是InputStreamReader 和 OutputStreamWriter的封装,根据系统默认字符集进行解码,但这不一定文件的编码相匹配,具有一定的盲目性。

四.缓冲流:BufferedInputStream、BufferedOutputStream 和 BufferedReader、BufferedWriter

在频繁的读写文件时,缓冲流能提高效率:

Java I/O 小结的更多相关文章

  1. java并发包小结(二)

    接上一篇 java并发包小结(一):http://blog.csdn.net/aalansehaiyang52/article/details/8877579 Future 接口Future 接口允许 ...

  2. java IO 流小结

    java IO 流小结 java流类图结构 流的分类 按方向 输入流 输出流 按类型 字节流 字符流 结论:只要是处理纯文本数据,就优先考虑使用字符流. 除此之外都使用字节流.

  3. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  4. Java调用存储过程小结

    学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下.(关于调用sqlserver的存储过程将在下次进行小结请关注) 一:无返回值的存储过程 存储过程 ...

  5. 性能测试工具LoadRunner13-LR之Virtual User Generator 创建java脚本以及小结

    Java vuser是自定义的java虚拟脚本,脚本中可以使用标准的java语言. 环境配置 1.安装jdk(注意:lr11最高支持1.6) 2.配置环境变量 3.在lr选择java Vuser协议 ...

  6. java第二周小结

    这是接触Java的第一周,了解这个语言的一些基础知识,下面是对这段时间重要知识点的汇总 一.Java是一种面向对象的语言    特点为:简洁高效.可移植性.适合分布式计算.健壮防患于未然的特性.多线程 ...

  7. 读《深入理解java虚拟机》小结

    之所以学习 jvm ,是因为在学习多线程相关知识时,对 volatile 关键字理解的不够透彻,总有种似懂非懂的感觉.于是通过在网上各种资料的查阅,最终将 volatile 和 jvm 联系上了,本身 ...

  8. java单向加密算法小结(1)--Base64算法

    从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...

  9. java Http编程小结

    1:什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以reque ...

  10. Java: IO 学习小结

    源: 键盘 System.in 硬盘 FileStream 内存 ArrayStream 目的: 控制台 System.out 硬盘 FileStream 内存 ArrayStream 处理大文件或者 ...

随机推荐

  1. ie10 css hack 条件注释等兼容方式整理

    点评:ie10已经上线一段时间了,相信已经有一部分前端潮人体验过了,截至到现在,在ie6到ie9的浏览器各种各样的古怪行为,开发人员不得不使用条件注释,有条件的类,和其他特定于IE的css hack来 ...

  2. PHP输出语句大杂烩

    一 echo echo() 实际上不是一个函数,是php语句,因此您无需对其使用括号.不过,如果您希望向 echo() 传递一个以上的参数,那么使用括号会发生解析错误.而且echo是返回void的,并 ...

  3. EasyUI 相关

    根据关键字值取行 var rowIndex = $('#tt').datagrid('getRowIndex', id);//id是关键字值 var data = $('#tt').datagrid( ...

  4. C语言结构体数组内带字符数组初始化和赋值

    1.首先定义结构体数组: typedef struct BleAndTspRmtCmd{ char terminal[3]; char note[3]; char rmtCmd[10]; char c ...

  5. TreeMap详细介绍(源码解析)和使用示例

    本文转自 http://www.cnblogs.com/skywang12345/p/3310928.html 概要 这一章,我们对TreeMap进行学习.我们先对TreeMap有个整体认识,然后再学 ...

  6. js获取链接等号“=”后面的参数

    用该属性获取页面 URL 地址: window.location 对象所包含的属性 属性 描述 hash 从井号 (#) 开始的 URL(锚) host 主机名和当前 URL 的端口号 hostnam ...

  7. JavaWeb 之文件上传

    1. 文件上传的要求 1.1 上传对表单的限制 method="post"; enctype="multipart/form-data"; 表单中需要添加文件表 ...

  8. VCL控件组件大都应该重载TWinControl的虚函数WndProc来进行处理窗口消息的工作

    TWinControl的构造函数中会调用MakeObjectInstance并且传递MainWndProc作为窗口消息处理函数,而MainWndProc则会调用虚函数WndProc来处理窗口消息.留个 ...

  9. SpringBoot处理url中的参数的注解

    1.介绍几种如何处理url中的参数的注解 @PathVaribale  获取url中的数据 @RequestParam  获取请求参数的值 @GetMapping  组合注解,是 @RequestMa ...

  10. 父标签浮动(float)“塌陷”问题

    浮动“塌陷” float参见: http://www.cnblogs.com/bigtreei/p/8110090.html http://www.w3school.com.cn/css/css_po ...