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流体系十分庞大,并且体系层次稍复杂,很容易记混或记错.在此,我把平时经常用 ...
随机推荐
- Java生成HTML文件
实例HTML文件<html> <head> <title>###title###</title> <meta http-equiv="C ...
- Python 爬取数据入库mysql
# -*- enconding:etf-8 -*- import pymysql import os import time import re serveraddr="localhost& ...
- nginx 配置图片服务器 (window版本)
配置nginx二级域名 ①找到配置文件 例如:%nginx_home%/conf/nginx.conf ②配置 #user nobody; worker_processes 1; #error_log ...
- U盘单个文件最大4G限制问题
1.不同文件系统的最大分区以及单个文件最大限制 FAT32单个文件最大不能超过4G,超过4G就不能读取了. NTFS(Windows):支持最大分区2TB,最大文件2TB FAT16(Windows) ...
- iterm2 学习笔记
itrem 笔记 选中即复制,有两种方式. 在新Tab中自动使用前一Tab路径,该怎么用? 系统热键:option+space 自动完成:输入打头几个字母,然后输入command+“;” iterm2 ...
- 软件工程作业 - 实现WC功能(java)
项目地址:https://github.com/yogurt1998/WordCount 要求 基本要求 -c 统计文件字符数(实现) -w 统计文件单词数(实现) -l 统计文件行数(实现) 扩展功 ...
- EBS Webservice Timeout,HTTP Server Return "500 Internal Server Error"
http://blog.itpub.net/26687597/viewspace-1207571/ 基于Oracle EBS R12,开发了一个Webservice用于返回某项主数据,当请求的数据量非 ...
- Android-ColorsUtil工具类
颜色工具类 public class ColorsUtil { private ColorsUtil() { throw new Error("Do not need instantiate ...
- LayaAir从入门到放弃
我是一个小白程序员,准备开发小程序找了很久小程序开发引擎,看到白鹭和LayaAir .经过一番资料查找后被LayaAir高性能.接口简洁及社区活跃所吸引,然后选择了LayaAir. 开发过程中一般小问 ...
- .Net Core + NGINX跳转登录时端口丢失
使用.Net Core + NGINX部署到服务器的时候,如果端口不是使用默认的80端口,在跳转到登录页面时,URL中的端口丢失. NGINX的配置如下: server { listen ; loca ...