一、

抽象类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. 图的邻接多重表和搜索(C++版本)

    最近在学数据结构,学到图这一章,网上的C++版本的代码乱得不行,所以自己写了一个完整C++版本的放这里. 用邻接多重表表示一个无向图,并给出DFS和BFS搜索代码.邻接多重表好处就是贼直观,几条边就几 ...

  2. phpmyadmin Wrong permissions on configuration file, should not be world writable!

    巴拉巴拉,实际场景是这样,因为有需要,所以想用django 做个rest服务给其他平台提供服务,发现以前正常的页面都无法运行,奇怪发现有一个页面提示连接不上mysql 难道mysql挂了,打开phpm ...

  3. dojo事件驱动编程之事件绑定

    什么是事件驱动? 事件驱动编程是以事件为第一驱动的编程模型,模块被动等待通知(notification),行为取决于外来的突发事件,是事件驱动的,符合事件驱动式编程(Event-Driven Prog ...

  4. FTP文件管理

    因为网站有下载文件需要和网站分离,使用到了FTP管理文件,这里做一个简单的整理. 1.安装FTP 和安装iis一样.全部勾选. 设置站点名称和路径. 设置ip. 身份授权选择所有用户,可以读写. 完成 ...

  5. c++实现冒泡排序

    # include<iostream> #include<stdio.h> using namespace std; void maopao(int *list){ int i ...

  6. Linux shell之打印输出

    介绍 经常需要和shell命令打交道,但是一直没有系统的学习,接下来会花1到2个月的时间系统的学习一下shell命令,接下来就开启shell命令的奇妙旅行吧.本章主要介绍shell的打印输出. 知识要 ...

  7. [安卓] 14、安卓HTTP——POST和GET用法分析

    内容简介 本文通过建立一个简单的Servlet服务器来分析安卓上用HTTP和服务器通信的细节,旨在演示C/S模式下服务器端和客户端的工作过程. 目录 part.1 用MyEclipse建立一个简单的s ...

  8. MFC CString::GetBuffer() 内存数据异常

    问题描述 在项目中的一个文件路径存储在CString的对象中,这个对象在函数间传递了几次,当传递出来的时候,因为要使用到字符指针,所以GetBuffer获取字符串的指针,但是通过调试,发现,CStri ...

  9. nginx1

    简介: Nginx全程是什么? Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器. 安装 配 ...

  10. Oracle日期时间函数大全

    ORACLE日期时间函数大全 TO_DATE格式(以时间:2007-11-02 13:45:25为例) Year: yy two digits 两位年 显示值:07 yyy three digits ...