IO流-概览
一、
抽象类InputStream和OutputStream构成了了IO类的基础
因为面向字节流的对象不便于处理Unicode形式储存的信息,所以从抽象类Reader和Writer中继承出专门用于处理Unicode字符的类构成了一个单独的层次结构
这些类拥有的读入和写出操作都是基于两字节的Unicode码元的。
二、
每个子类只需覆盖InputStream中read方法(读入一个字节)或者是OutputStream中write方法(向某个位置写出一个字节)
read和write在执行时都将阻塞,直至字节确实被读入或写出,如果流不能被立即访问则该线程阻塞(可通过available方法判断可用于读入的字节数量来避免阻塞)
API:
java.io.InputStream:
(1)abstract int read():从数据中读入一个字节,并返回该字节,在碰到流的尾时返回-1
(2)int read(byte[] b):读入一个字节数组,返回实际读入的字节数,最多读入b.length个字节,在碰到流的尾时返回-1
(3) int read(byte[] b, int off, int len):读入一个字节数组。这个read方法返回实际读入的字节数,或者在碰到流的结尾时返回-1
参数:b 数据读入的数组
off 第一个读入字节应该被放置的位置在b中的偏移量
len 读入字节的最大数量
(4) long skip(long n):在输入流中跳过n个字节,返回实际跳过的字节数(如果碰到流的结尾,则可能小于n) 。
(5) int available():返回在不阻塞的情况下可用的字节数(阻塞意味着当前线程将失去它对资源的占用) 。
(6) void close():关闭流
(7) void mark(int readlimit):在输入流的当前位置打一个标记(并非所有的流都支持这个特性) 。如果从输入流中已经
读入的字节多于readlimit个,则这个流允许忽略这个标记。
(8)void reset():返回到最后的标记,随后对read的调用将重新读入这些字节。如果当前没有任何标记,
则这个流不被重置。
(9)boolean markSupported():如果这个流支持打标记,则返回true。
java.io.OutputStream:
(1) abstract void write(int n):写出一个字节的数据。
(2) void write(byte[] b)
(3) void write(byte[] b, int off, int len):写出所有字节或者某个范围的字节到数组b中
参数:b 数据写出的数组
off 第一个写出字节在b中的偏移量
len 写出字节的最大数量
(4) void close():清空并关闭输出流。
(5) void flush():清空输出流,也就是将所有缓冲的数据发送到目的地
三、流家族:
(一)字节流家族:

(二)Unicode文本流家族

四、组合流过滤器:
FileInputStream和FileOutputStream只能从文件中读入字节或者字节数组(不能读入数字类型),而DataInputStream只能读入数字类型(不能从文件中获取数据),那么可以组合这两个类从文件中读取数字:
FileInputStream fin = new FileInputStream(“test.txt”);
DataInputStream din = new DataInputStream(fin);
Double s = din.readDouble();
流在默认情况下是不进缓冲区的,那么我们可以这样组合:
DataInputStream din = new DataInputStream(
New BufferedInputStream(
New FileInputStream(“test.txt”)));(之所以把datainputsteam放在最后是为了使用DataInputStream的方法,并且希望它们能够使用带缓冲机制的read方法)
IO流-概览的更多相关文章
- Java基础之IO流
很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...
- Java中IO流,输入输出流概述与总结
总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...
- Java:IO流与文件基础
Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...
- java IO流详解
流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- IO流总结
IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类: 按照操作数据的类型分为两种: 字节流和字符流. 按 ...
- IO流
流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...
- Java IO流学习总结
Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...
- 揭开Java IO流中的flush()的神秘面纱
大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...
- java IO流 之 其他流
一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一). public class ByteArrayInputStream extends ...
随机推荐
- libev安装与示例程序编译运行
Linux平台C网络编程,之前总是看各大名著(如UNIX环境高级编程和UNIX网络编程,还有TCP/IP详解 卷1:协议和深入理解计算机系统(原书第2版)),同时写点小程序练习.然而还是拿不出手. 参 ...
- [转载]iOS Provisioning Profile(Certificate)与Code Signing详解
原文:http://blog.csdn.net/phunxm/article/details/42685597 引言 关于开发证书配置(Certificates & Identifiers & ...
- MVC中使用Ueditor
配置.net mvc4项目使用ueditor编辑器. 1.首先下载Ueditor1.3.6开发版(http://ueditor.baidu.com/website/download.html) 2.将 ...
- RHEL6.5中完成播放音乐的“大业”
参考文章:http://ylw6006.blog.51cto.com/470441/589964 感谢:ylw6006@51CTO 首先,费了不少劲去找到三个文件(还要对应版本el6.i686或el6 ...
- NSData与其它类型的转换
NSString转换成NSData对象 NSData *xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding] ...
- 使用的组件:JQuery UI
jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的模式,所以,只要您学会使 ...
- JAVA CAS原理深度分析-转载
参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...
- idlcpp 功能改进
最近没有续写 idlcpp 的教程, 因为忙着对它进行大幅度的修改. 一开始本是计划用idlcpp对付新写的代码,让这些新写的代码能够很容易提供给脚本使用.后来又希望能将大量现存的代码移植过来,毕竟有 ...
- android权限permission大全
1.Android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS写 ...
- JavaScript函数柯里化
函数式 JavaScript是以函数为一等公民的函数式语言.函数在JavaScript中也是一个对象(继承制Function),函数也可以作为参数传递成函数变量.最近几年函数式也因为其无副作用的特性. ...