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流体系十分庞大,并且体系层次稍复杂,很容易记混或记错.在此,我把平时经常用 ...
随机推荐
- Linux抓包
默认系统里边没有安装有tcpdump的,无法直接使用 这里我们可以使用yum来直接安装它 yum install -y tcpdump 如果忘记了这个软件的用法,我们可以使用 tcpdump ...
- (最小生成树)QS Network -- ZOJ --1586
链接: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1586 http://acm.hust.edu.cn/vjudge/ ...
- mySQl数据库中不能插入中文的处理办法
1. 修改MySQL安装目录下(C:\Program Files\MySQL\MySQL Server 5.5)的my.ini文件 设置: default-character-set=utf8 cha ...
- java实现WC项目
个人项目:WC wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单 ...
- 用于sql代码实现用户的创建,以及不同用户之间登陆的切换
--1.准备工作.创建两个登录名Create Login Login1 with Password='123456';Create Login Login2 with Password='123456 ...
- CNN的学习笔记
1.卷积核的概念,卷积核的size,就是滑动窗口的大小,例如原始数据为28*28的手写数字,滑动窗口size为5*5,则卷积核的size为5*5.卷积核就是权重集合,就是5*5+1.1表示偏置项.卷积 ...
- Microsoft SQL Server 2012 管理 (1): 安装配置SQL Server 重点
SQL Server 可以在实例,数据库,列,查询分别指定排序规则 /* Module 1 - working with Clollations */ -- 1.1 Obtain the Instan ...
- Mina的ssl加密
前面写的Mina的示例,都是可以通过telnet登录的,并且可以相互交互. 现在采用ssl加密的方式,对建立连接时,进行加密连接.这样,双方只有统一的加密,然后才可以连接. 密钥的生成之前有说过,里面 ...
- 【转】Swig Getting Started
Installation Via NPM: $ npm install swig --save Basic Usage Swig has multiple ways to compile and re ...
- SQL Server 2016最值得关注的10大新特性
全程加密技术(Always Encrypted) 全程加密技术(Always Encrypted)支持在SQL Server中保持数据加密,只有调用SQL Server的应用才能访问加密数据.该功能支 ...