Java I/O 小结
主要内容:

一.输入流基类: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 小结的更多相关文章
- java并发包小结(二)
接上一篇 java并发包小结(一):http://blog.csdn.net/aalansehaiyang52/article/details/8877579 Future 接口Future 接口允许 ...
- java IO 流小结
java IO 流小结 java流类图结构 流的分类 按方向 输入流 输出流 按类型 字节流 字符流 结论:只要是处理纯文本数据,就优先考虑使用字符流. 除此之外都使用字节流.
- java单向加密算法小结(2)--MD5哈希算法
上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...
- Java调用存储过程小结
学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下.(关于调用sqlserver的存储过程将在下次进行小结请关注) 一:无返回值的存储过程 存储过程 ...
- 性能测试工具LoadRunner13-LR之Virtual User Generator 创建java脚本以及小结
Java vuser是自定义的java虚拟脚本,脚本中可以使用标准的java语言. 环境配置 1.安装jdk(注意:lr11最高支持1.6) 2.配置环境变量 3.在lr选择java Vuser协议 ...
- java第二周小结
这是接触Java的第一周,了解这个语言的一些基础知识,下面是对这段时间重要知识点的汇总 一.Java是一种面向对象的语言 特点为:简洁高效.可移植性.适合分布式计算.健壮防患于未然的特性.多线程 ...
- 读《深入理解java虚拟机》小结
之所以学习 jvm ,是因为在学习多线程相关知识时,对 volatile 关键字理解的不够透彻,总有种似懂非懂的感觉.于是通过在网上各种资料的查阅,最终将 volatile 和 jvm 联系上了,本身 ...
- java单向加密算法小结(1)--Base64算法
从这一篇起整理一下常见的加密算法以及在java中使用的demo,首先从最简单的开始. 简单了解 Base64严格来说并不是一种加密算法,而是一种编码/解码的实现方式. 我们都知道,数据在计算机网络之间 ...
- java Http编程小结
1:什么是HTTP? 超文本传输协议(HyperText Transfer Protocol -- HTTP)是一个设计来使客户端和服务器顺利进行通讯的协议. HTTP在客户端和服务器之间以reque ...
- Java: IO 学习小结
源: 键盘 System.in 硬盘 FileStream 内存 ArrayStream 目的: 控制台 System.out 硬盘 FileStream 内存 ArrayStream 处理大文件或者 ...
随机推荐
- Classification week2: logistic regression classifier 笔记
华盛顿大学 machine learning: Classification 笔记. linear classifier 线性分类器 多项式: Logistic regression & 概率 ...
- python资源网站
whl安装包资源网站:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
- PHP中MVC的编程思想浅谈
我相信这样的文章已经被写烂了,但是我今天还是愿意冒着风险把自己的经验与大家分享一下.纯属原创,我也没什么可保留,希望对新手有帮助,有说的什么不对的地方,欢迎大家伙吐槽. 什么是MVC? 简单的说就是将 ...
- 误: Apache shutdown unexpectedly解决办法
from:http://www.wopus.org/wordpress-basic/getting-started/2536.htmlXAMPP错 2015年10月20日15:58:19 新手上路发 ...
- o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
1.错误信息提示: 2019-04-16 22:02:05.811 ERROR 18112 --- [ main] o.a.catalina.core.AprLifecycleLi ...
- CodeIgniter框架——CI的执行流程
应用程序流程图 CodeIgniter执行流程 源码分析——CI到底做了些什么 (由welcome的例子出发——讲解index.php——讲解CodeIgniter.php) (load_class的 ...
- 【BZOJ1811】[Ioi2005]mea 乱搞
[BZOJ1811][Ioi2005]mea Description 考虑一个非递减的整数序列 S1,....Sn+1(Si<=Si+1 1<=i<=n). 序列M1...Mn是定义 ...
- 常见的.NET面试题(130)
1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private : 私有成员, 在类的内部才可以访问. protected : 保护成 ...
- oracle 查看表是否被锁
--以下几个为相关表SELECT * FROM v$lock;SELECT * FROM v$sqlarea;SELECT * FROM v$session;SELECT * FROM v$proce ...
- ORACLE中的MERGE语法使用记录
项目中使用到了Oracle的MERGE INTO语句,在这里简单记录下使用方法 使用场景如下: 存在对一张数据量很大的表,你需要对里面的大量数据进行更新,如果数据不存在,就进行插入的操作. 常规想到的 ...