Java IO

字符与字节

  在Java中有输入、输出两种IO流。每种输入、输出流又分为字节流和字符流两大类。Java采用unicode编码,2个字节表示一个字符;

File类

  File类是java.io包下代表与平台无关的文件和目录。也就是说,如果希望在程序中操作文件和目录,都可以通过File类来完成。

IO流的概念

  Java的IO流是实现输入/输出的基础,它可以方便地实现数据的输入/输出操作,在Java中把不同的输入/输出源抽象表述为流。流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
  流有输入和输出,输入时是流从数据源流向程序。输出时是流从程序传向数据源,而数据源可以是内存,文件,网络或程序。

IO流的分类

输入流和输出流

1 . 输入流:只能从中读取数据,而不能向其写入数据;
2 . 输出流:只能向其写入数据,而不能从中读取数据;

字节流和字符流

  字节流和字符流的用法几乎一样,区别在于字节流和字符流所操作的数据单元不同。

  字节流和字符流的区别:
1 . 读写单元不同:字节流以字节(8 bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节;
2 . 处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据;

  只要是处理纯文本数据,就优先考虑使用字符流。除此之外,都使用字节流。

节点流和处理流

IO流的四大基类

  根据流的流向以及操作的数据单元不同,将流分为了四种类型,每种类型对应一种抽象基类。这四种抽象基类分别为:InputStream、Reader、OutputStream、Writer。这四种基类下,对应不同的实现类,具有不同的特性。

  InputStream、Reader、OutputStream、Writer这四个抽象基类,本身不能创建实例来执行输入/输出,但它们将成为所有输入/输出流的模版,所以它们的方法是所有输入/输出流都可以使用的方法。

InputStream

  InputStream是所有的输入字节流的父类,它是一个抽象类,主要包含三个方法:

public abstract int read() throws IOException;

public int read(byte b[]) throws IOException {
}

public int read(byte b[], int off, int len) throws IOException {
}

OutputStream

  OutputStream是所有的输出字节流的父类,它是一个抽象类,主要包含四个方法:

public abstract void write(int b) throws IOException;

public void write(byte b[]) throws IOException {
}

public void write(byte b[], int off, int len) throws IOException {
}

public void flush() throws IOException {
}

Reader

  Reader是所有的输入字符流的父类,它是一个抽象类,主要包含四个方法:

public int read() throws IOException {
}

public int read(char cbuf[]) throws IOException {
}

abstract public int read(char cbuf[], int off, int len) throws IOException;

public int read(java.nio.CharBuffer target) throws IOException {
}

Writer

  Writer是所有的输出字符流的父类,它是一个抽象类,主要包含如下六个方法:

public void write(int c) throws IOException {
}

public void write(char cbuf[]) throws IOException {
}

abstract public void write(char cbuf[], int off, int len) throws IOException;

public void write(String str) throws IOException {
}

public void write(String str, int off, int len) throws IOException {
}

abstract public void flush() throws IOException;

-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-------------------last line for now------------------