一、

抽象类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流-概览的更多相关文章

  1. Java基础之IO流

    很长时间都没有更新了,最近在补充JavaSE的一些细节部分 关于IO流的一些总结 首先要介绍的是File类,File类用于对文件和目录的一些操作 1.创建文件CreateNewFile() 2.对文件 ...

  2. Java中IO流,输入输出流概述与总结

    总结的很粗糙,以后时间富裕了好好修改一下. 1:Java语言定义了许多类专门负责各种方式的输入或者输出,这些类都被放在java.io包中.其中, 所有输入流类都是抽象类InputStream(字节输入 ...

  3. Java:IO流与文件基础

    Java:IO流与文件基础 说明: 本章内容将会持续更新,大家可以关注一下并给我提供建议,谢谢啦. 走进流 什么是流 流:从源到目的地的字节的有序序列. 在Java中,可以从其中读取一个字节序列的对象 ...

  4. java IO流详解

    流的概念和作用 学习Java IO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  5. IO流总结

    IO流的作用:用于设备和设备之间的数据传输. IO流的概念:流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象. IO流的分类:  按照操作数据的类型分为两种: 字节流和字符流.  按 ...

  6. IO流

    流的概念和作用 学习JavaIO,不得不提到的就是JavaIO流. 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特 ...

  7. Java IO流学习总结

    Java流操作有关的类或接口: Java流类图结构: 流的概念和作用 流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象.即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输 ...

  8. 揭开Java IO流中的flush()的神秘面纱

    大家在使用Java IO流中OutputStream.PrintWriter --时,会经常用到它的flush()方法. 与在网络硬件中缓存一样,流还可以在软件中得到缓存,即直接在Java代码中缓存. ...

  9. java IO流 之 其他流

    一.内存操作流(ByteArrayInputStream.ByteArrayOutputStream) (一).   public class ByteArrayInputStream extends ...

随机推荐

  1. libev安装与示例程序编译运行

    Linux平台C网络编程,之前总是看各大名著(如UNIX环境高级编程和UNIX网络编程,还有TCP/IP详解 卷1:协议和深入理解计算机系统(原书第2版)),同时写点小程序练习.然而还是拿不出手. 参 ...

  2. [转载]iOS Provisioning Profile(Certificate)与Code Signing详解

    原文:http://blog.csdn.net/phunxm/article/details/42685597 引言 关于开发证书配置(Certificates & Identifiers & ...

  3. MVC中使用Ueditor

    配置.net mvc4项目使用ueditor编辑器. 1.首先下载Ueditor1.3.6开发版(http://ueditor.baidu.com/website/download.html) 2.将 ...

  4. RHEL6.5中完成播放音乐的“大业”

    参考文章:http://ylw6006.blog.51cto.com/470441/589964 感谢:ylw6006@51CTO 首先,费了不少劲去找到三个文件(还要对应版本el6.i686或el6 ...

  5. NSData与其它类型的转换

    NSString转换成NSData对象 NSData *xmlData = [@"testdata" dataUsingEncoding:NSUTF8StringEncoding] ...

  6. 使用的组件:JQuery UI

    jQuery UI包含了许多维持状态的小部件(Widget),因此,它与典型的 jQuery 插件使用模式略有不同.所有的 jQuery UI 小部件(Widget)使用相同的模式,所以,只要您学会使 ...

  7. JAVA CAS原理深度分析-转载

    参考文档: http://www.blogjava.net/xylz/archive/2010/07/04/325206.html http://blog.hesey.net/2011/09/reso ...

  8. idlcpp 功能改进

    最近没有续写 idlcpp 的教程, 因为忙着对它进行大幅度的修改. 一开始本是计划用idlcpp对付新写的代码,让这些新写的代码能够很容易提供给脚本使用.后来又希望能将大量现存的代码移植过来,毕竟有 ...

  9. android权限permission大全

    1.Android.permission.WRITE_USER_DICTIONARY允许应用程序向用户词典中写入新词 2.android.permission.WRITE_SYNC_SETTINGS写 ...

  10. JavaScript函数柯里化

    函数式 JavaScript是以函数为一等公民的函数式语言.函数在JavaScript中也是一个对象(继承制Function),函数也可以作为参数传递成函数变量.最近几年函数式也因为其无副作用的特性. ...