Java语言基础:流类(1)

原创 2011年04月05日 16:27:00
1.  java通过流的概念来实现数据的输入输出,或叫读写更容易理解一些;下面4个类是所有流的基类,分别处理字节和字符的读写:
  • InputStream: 输入(读)字节流抽象类。
  • OutputStream: 输出(写)字节流抽象类。
  • Reader: 输入(读)字符流抽象类。
  • Writer: 输出(写)字符流抽象类。

2.  上面4个抽象类提供了最基本的读写方法,输入输出流有一个当前位置(Pos)的概念,指定下一次的读写将从流的什么位置开始,调用Read或Write方法时,Pos会同时向后移,移多少依读写多少字节或多少字符而定:

  • InpuStream:

方法
说明
public abstract int read()
从流中读下一个字节,方法返回这个字节,但如果到达流结尾,将返回回-1。
public int read(byte[] b)
从流中读出多个字节,并存到数组b中;期望读出的字节数由数组的长度决定,方法返回的是实际读出的字节,如果已到达结尾将返回-1。
public int read(byte[] b, int off, int len)
 
从流中读出多个字节,并存到数组b中;期望读出的字节数由len决定,off指定b的偏移,数据将从这个偏移开始保存;方法返回实际读出的字节,如果已到达结尾将返回-1。
public void mark(int readlimit)
标记一个位置,当下一次调用reset时,Pos将被定位到这个位置。
public void reset()
重置Pos到上一次mark指定的位置,默认为0.
public boolean markSupported()
是否支持标记
public long skip(long n)
从Pos跳过n个字节,相当于Pos += n。
public void close()
关闭流以释放相关的系统资源,比如文件流,但并不是所有的流类都需要Close。
public int available()
还有多少字节可以读取,相当于: Size - Pos

  • OutStream:

方法
说明
public abstract void write(int b)
向流写一个字节
public void write(byte[] b)
向流写多个字节
public void write(byte[] b, int off, int len)
向流写多个字节,从数组的off偏移开始写,最多写len个字节。
public void close()
关闭流以释放相关的系统资源,比如文件流,但并不是所有的流类都需要Close。
public void flush()
刷新流,提供这个方法意图是:如果流的实现是将之前写入的数据缓存着,调用该方法可以强迫将数据真正写入流中。

  • Reader和Writer和上面的InputStream和OutStream很类似,只不过他们读写的单位是字符,并且提供几个方法读写String的方法。
3.  所有流类都直接或间接继承自上面4个抽象类,并提供不同的功能,下面是常用流类的继承关系:
InputStream
    |-ByteArrayInputStream: 字节输入流。
    |-FileInputStream: 文件输入流
    |-ObjectInputStream: 对象输入流
    |-PipedInputStream: 管道输入流
    |-FilterInputStream: 过滤输入流
        |-BufferedInputStream: 缓存输入流,读出时先缓存。
        |-DataInputStream: 数据输入流,读出Java基本数据类型。
OutStream
    |-ByteArrayOutputStream: 字节输出流
    |-FileOutputStream: 文件输出流
    |-ObjectOutputStream: 对象输出流
    |-PipedOutputStream: 管道输出流
    |-FilterOutputStream: 过滤输出流
        |-BufferedOutputStream: 缓存输入流,读出时先缓存。
        |-DataOutputStream: 数据输入流,读出Java基本数据类型。
Reader
    |-CharArrayReader: 字符读流。
    |-StringReader: 字符串读流。
    |-PipedReader: 管道读流。
    |-BufferedReader: 缓存读流。
    |-InputStreamReader: 从字节流读出字符。
Writer
    |-CharArrayWriter: 字符写流。
    |-StringWriter: 字符串写流。
    |-PipedWriter: 管道写流。
    |-BufferedWriter: 缓存写流。
    |-OutputStreamWriter: 将字符写入字节流。

java语言基础入门——各类流的介绍

1、什么是流?流是一个抽象的概念,代表一串数据集合,当java程序需要从数据源读取数据时,就开启了一个到数据源的流,同样,当数据需要输出数据到达目的地时,也需要开启一个流。流是用来处理数据的通道。流有...
  • qq_29672495
  • qq_29672495
  • 2016年08月05日 17:56
  • 1543

Java语言基础面试题及答案

1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?  可以有多个类,但只能有一个public的类,并且public的类名必须与文件名相一致。 2、Java有没有goto?...
  • develop_wangzhi
  • develop_wangzhi
  • 2017年04月21日 11:32
  • 967

JAVA语言基础知识(一)

JAVA基础名词 JDK软件安装 JDK软件下的目录简介 JAVA关键字和保留字 二进制、八进制、十进制和十六进制 JAVA原码、反码、补码 JAVA三大注释...
  • dlmacr
  • dlmacr
  • 2017年03月28日 13:00
  • 509

敢说你java基础很好吗?你能答对几个?(Java基础知识点整理)

1.熟悉IO相关接口和类,知道字符流和字节流的区别。 2.理解Java反射,并熟练使用反射解决问题。 3.理解泛型,并能熟练使用。知道的区别。 4.了解Collection、List、Map、Set之...
  • u014481156
  • u014481156
  • 2015年03月10日 21:40
  • 771

java流工具类使用很方便

package com.auto.generate.utils ; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutp...
  • hfmbook
  • hfmbook
  • 2014年05月14日 11:55
  • 3008

java基础之类加载机制(一)

Sun公司设计java语言的目标是让Java程序不必经过修改就可以在各种各样的计算机(包括PC机和工作站)上运行。为了实现这一目标,Sun公司提供了一阵Java虚拟机(Java Virtual Mac...
  • leilu000
  • leilu000
  • 2015年05月20日 16:07
  • 454

Java基础知识与C语言的对比

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- DOS常用命令 1、dir:(directory) 2、md:(make directory...
  • u011486491
  • u011486491
  • 2015年05月06日 20:35
  • 444

java中文件和流处理

与C语言只有单一类型FILE*即可工作良好不同,java拥有一个包含各种流类型的流家族,其数量超过60个。所以java中文件和流的操作较复杂,下面简单介绍一些操作和流相互之间的区别。1、将文本读入流。...
  • feilong_csdn
  • feilong_csdn
  • 2016年03月05日 12:28
  • 1245

Java语言程序设计(基础篇)原书第十版 课后习题 第五章

import java.util.Scanner; public class Code_Practice_5 { public static void main(String[] args) {...
  • zjjoebloggs
  • zjjoebloggs
  • 2015年10月21日 20:27
  • 9921

java语言程序设计基础篇第六章编程练习题

1 import java.util.Scanner; public class Main{ public static void main(String[] args){ final int...
  • gyhguoge01234
  • gyhguoge01234
  • 2016年07月05日 22:26
  • 3913
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java语言基础:流类(1)
举报原因:
原因补充:

(最多只允许输入30个字)