Java之IO(零)总结
转载请注明原出处:http://www.cnblogs.com/lighten/p/7274378.html
1.前言
本章是对之前所讲述的整个Java的IO包的一个总结,抽出个人认为比较重要的知识点来进行归纳。
2.体系




上面四幅图就是Java的IO包的继承关系了,这些类大致上都在其它的章节中介绍过一次,下列出我写的相关内容的目录。
Java之IO(一)InputStream和OutputStream
Java之IO(二)BufferedInputStream和BufferedOutputStream
Java之IO(三)ByteArrayInputStream和ByteArrayOutputStream
Java之IO(四)DataInputStream和DataOutputStream
Java之IO(六)FileInputStream和FileOutputStream
Java之IO(七)ObjectInputStream和ObjectOutputStream
Java之IO(八)PipedIutputStream和PipedOutputStream
Java之IO(十一)BufferedReader和BufferedWriter
Java之IO(十二)CharArrayReader和CharArrayWriter
Java之IO(十三)File、Filter、Piped、String和InputStreamReader与OutputStreamWriter
这些内容大体都描述的比较无聊,中间有些使用的小例子,还有些测试说明。写的不好,在下面会将其中比较有用的信息提取出来,有兴趣看的也可以看看。
3.流说明
此节主要明确流的各个方法的使用。
3.1 InputStream

输入字节流的规定方法就是上图所给,其所有子类和实现类要满足下面的方法说明才行。
read():读取一个字节,并返回。如果读到末尾返回-1,其读取的范围是0~255。
read(byte[],int,int):读取指定数量的字节,并赋给所给从指定下标开始的数组,返回实际读取并赋值的数量。
skip(long):跳过指定数量的字节,返回实际跳过的字节数。
available():返回流预计剩余可读取的字节数。
close():关闭该字节流
mark(int):设置在标记位置失效之前可以读取的字节的最大限制,前提是markSupported为true,支持标记。在有些流中这个传递的参数没有意义。
reset():重置流到标记的位置,前提是支持标记且标记过了。
markSupported():判断这个流是否支持标记
3.2 OutputStream

write(int):写入一个字节
write(byte[],int,int):写入所给字节数组指定下标开始的指定数量的字节
flush:将缓存的数据写入指定源。不保证一定写入了,比如文件流,只保证通知了操作系统写入数据到磁盘,不保证这些数据已经被写入磁盘。
close:关闭流。
3.3 Reader

与InputStream方法类似,不同之处在于:1.多了一个ready()方法判断流是否准备好,可以进行读取了。2.其抽象方法是read(char[],int,int),read方法是有实现的,InputStream是read方法是抽象的。
3.4 Writer

writer的相关方法和OutputStream的也十分相似,并没有什么值得一提的内容。
4.其它要点
1、第7篇测试了一下一个文件写入多个对象的问题,并没有发现不能读取,大家可以试试,暂不清楚是否是JDK1.8修复了这个问题,还是本就不存在此问题。
2、第8篇对管道流进行了测试,想了解的可以具体看看。
3、第9篇末尾讨论了一下为何流的结束以-1来判断,读取的值难道不会正好是-1吗?那里写的有点乱,这里简单说明一下:不管用什么作为结束判断标识符,都无法避免读取的和判断的标志符相同的可能,判断流是否结束都不是以-1来判断的,而是流结束了才会给-1这个标识符,先知道结束然后才给的标志,而不是以预计的结束标识符来判断是否结束。至于读取的字节为何不会与标志符相同,在第9篇的一个实验已经说明了,利用了编码的小特性,流的接口也说明了,所有的字节都被限制在了0~255,返回了-1自然不会是读取到的。读取的-1实际上被转成了在0~255范围内的其它值,也可以很方便的通过编码转回来。
4、第14篇介绍了两个实用的类RandomAccessFile和StreamTokenizer。可以看看。
Java之IO(零)总结的更多相关文章
- Java的IO系统
Java IO系统 "对语言设计人员来说,创建好的输入/输出系统是一项特别困难的任务." 由于存在大量不同的设计方案,所以该任务的困难性是很容易证明的.其中最大的 ...
- Java基础IO流(二)字节流小案例
JAVA基础IO流(一)https://www.cnblogs.com/deepSleeping/p/9693601.html ①读取指定文件内容,按照16进制输出到控制台 其中,Integer.to ...
- 【Java】Java中的零拷贝
物理内存 计算机物理内存条的容量,比如我们买电脑会关注内存大小有多少G,这个容量就是计算机的物理内存. 虚拟内存 操作系统为每个进程分配了独立的虚拟地址空间,也就是虚拟内存,虚拟地址空间又分为用户空间 ...
- java的IO流
java的IO流继承四大抽象类分别是字节流 inputStream outputStream与字符流 read write.怎么理解记忆很重要. 直接连接读写对象的是结点流,例如对文件读取字节类的名字 ...
- java之io之File类的list()方法过滤目录的使用
java的io的知识中,File类必须掌握.File类是对文件或者文件夹的封装.它本身并不能对所封装的文件进行读写,它封装的只是文件或文件夹的周边知识,比如 大小啦,创建日期啦,路径啦等等. 如果Fi ...
- Java 新IO
NIO提供全新的底层I/O模型.与最初的java.io包中面向流(stream-oriented)概念不同,NIO采用了面向块的概念(block-oriented).在尽可能的情况下,I/O的操 ...
- JAVA中IO总结
JAVA中IO流主要分为两大类: 字节流:InputStream+OutputStream 字符流:Reader+Writer 字节流: InputStream是所有字节输入流的父类 OutputSt ...
- Java基础——IO流
今天刚刚看完java的io流操作,把主要的脉络看了一遍,不能保证以后使用时都能得心应手,但是最起码用到时知道有这么一个功能可以实现,下面对学习进行一下简单的总结: IO流主要用于硬板.内存.键盘等处理 ...
- 【Java】IO流简单分辨
转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5827509.html Java的IO流体系十分庞大,并且体系层次稍复杂,很容易记混或记错.在此,我把平时经常用 ...
随机推荐
- ViewFlipper实现自动播放的图片库
作者实现的基础上,加上了文字的变换 public class MainActivity extends Activity { private ViewFlipper viewFlipper; priv ...
- Linux常见配置文件
一./etc 配置文件 /etc/passwd 用户数据库,其中的域给出了用户名.真实姓名.家目录.加密口令和用户的其他信息 /etc/group 类似/etc/passwd ,但说明的不是用户而是组 ...
- hdu 4956
http://acm.hdu.edu.cn/showproblem.php?pid=4956 首先给出一个范围 [l, r],问能否从中找到一个数证明 Hanamichi's solution 的解法 ...
- springmvc elf8848
刚开始觉得孔浩讲得好,之后觉得开涛讲得好,现在觉得elf8848讲得好.其实只是自己学习的各个阶段 孔浩:环境搭建,做了个基础的CRUD 开涛:讲了Controller(不该看),注解,数据绑定,请求 ...
- springmvc 开涛 数据验证
两种方式:编程和声明. 编程需要:验证器,控制器,servlet.xml,错误码设置 声明需要:加jar包,控制器,跟孔浩讲得类似 错误消息设置的两种方式:硬编码:从资源文件中读取(默认,自定义).
- Windows 7下通过Excel2007连接Oracle数据库并对表查询
http://blog.csdn.net/pan_tian/article/details/8133668 1. 环境变量的设置 1.1 ORACLE_HOME环境变量的设置,我这里指向了我的Ora ...
- Python学习-15.Python的中的套接字socket
Python应用最广泛的要数web方面了.因此,socket显得十分重要. 要使用socket,必须引入socket模块,因此在Python脚本开头先写入 import socket 学过socket ...
- ListView的另一种可读性更强的ViewHolder模式写法
常见的写法是这样的: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHol ...
- Team Foundation Server (TFS)与Project Server集成,使用DNS(友好地址)地址注册PWA
问题描述: 当Team Foundation Server(TFS 2010/2012/2013)与Project Server高可用性的环境集成时,必然会使用Project Server (PWA) ...
- .net4.0重新注册IIS 的方法
操作步骤如下: 1.开始 2.运行 3.cmd 4.cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319 5.aspnet_regiis.exe -i