您的位置:首页 > 编程语言 > Java开发

Java IO 系列(01)-Java IO概述

2016-09-23 00:00 549 查看

1. 引言

趁着有时间,看了下JDK1.7 API 对Java.lang.io包下经常用到的Java IO处理类做了一些总结性的东西,希望能对Java开发者有点用。

2.Java IO概述

所谓IO,也就是Input与Output的缩写。在java中,IO涉及的范围比较广泛,包括:文件读写、标准设备输出等。Java中IO是以流为基础进行输入输出的,所有数据被串行化写入输出流,或者从输入流读入。

在java io的称呼中,我们经常会提到“输入流”、“输出流”等等概念。首先,什么是流呢?
所谓“流”,就是一种抽象的数据的总称,它的本质是能够进行传输。
a) 按照“流”的数据流向,可以将其化分为:输入流输出流
b) 按照“流”中处理数据的单位,可以将其区分为:字节流字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。而且,需要注意的是,java的字节是有符号类型,而字符是无符号类型!

3.Java IO架构

当然这还有些不完整,Serializable接口还未给出,这里只先讨论Java IO常用类,稍后讨论serializable。



我们将按照不同的类来详细讲述各个类的功能及其实现原理。

3.1 InputStream

InputStream类是所有字节输入流的超类,其函数类表如下:

// 构造函数
InputStream()

int     available()
void    close()
void    mark(int readlimit)
boolean markSupported()
int     read(byte[] buffer)
abstract     int     read()
int     read(byte[] buffer, int offset, int length)
synchronized void    reset()
long    skip(long byteCount)

所有继承了InputStream的子类都具有此类方法。

3.2 OutputStream

OutputStrem类是所有字节输出流的超累,其代码列表如下:

package java.io;

public abstract class OutputStream implements Closeable, Flushable {
// 将字节b写入到“输出流”中。
// 它在子类中实现!
public abstract void write(int b) throws IOException;

// 写入字节数组b到“字节数组输出流”中。
public void write(byte b[]) throws IOException {
write(b, 0, b.length);
}

// 写入字节数组b到“字节数组输出流”中,并且off是“数组b的起始位置”,len是写入的长度
public void write(byte b[], int off, int len) throws IOException {
if (b == null) {
throw new NullPointerException();
} else if ((off < 0) || (off > b.length) || (len < 0) ||
((off + len) > b.length) || ((off + len) < 0)) {
throw new IndexOutOfBoundsException();
} else if (len == 0) {
return;
}
for (int i = 0 ; i < len ; i++) {
write(b[off + i]);
}
}

public void flush() throws IOException {
}

public void close() throws IOException {
}
}


4.Java IO目录

(等其他博文写完,再来补充)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java javaIO IO