您的位置首页生活百科

Java高级[4]:输入输出流之字节流

Java高级[4]:输入输出流之字节流

的有关信息介绍如下:

Java高级[4]:输入输出流之字节流

Java的流式输入输出建立在4个抽象类的基础上:InputStream,OutputStream,Reader和Writer。它们用来创建具体的流式子类。InputStream和OutputStream类被设计为字节类,而Reader和Writer被设计为字符流类。一般,处理字符和字符串用字符流类,字节和二进制文件用字节类。下面,我们讲的字节流类。

一般在操作文件流时,不管是字节流还是字符流,都可以按照以下方式进行。

(1)使用File类找到一个文件,或创建一个喝斤川文件;

(2)通过File类去实例化字节流或字符流类的子类;

(3)进行字节/字符的读、写操作;

(4)关闭文件流敏阅。

字节流中的两个顶层类为:InputStream(输入字节流)和OutputStream(输出字节流).

其下有两个子类FileInputStream(文件输入流)和闲讨FileOutputStream(文件输出流)。

InputStream类的一些方法:

int avaiable()

功能:返回当前可读的输入字节数

void close()

功能:关闭输入流

void mark(int numBytes)

功能:在输入流的当前点再放置一个标记,该流在读取N个bytes字节前都有效

int read()

功能:如果下一个字节可读则返回一个整型,遇到文件末尾是返回-1;

int read(byte buffer[])

功能:读取buffer.length个字节到buffer中,并返回实际成功读取的字节数,如果遇到文件末尾则返回-1;

int read(byte buffer[],int offset,int numBytes)

功能:试图读取buffer中从buffer[offset]开始的numBytes个字节,返回读取的实际字节数,如果遇到文件末尾则返回-1;

void reset()

功能:重新设置输入指针到先前设置的标志处;

long skip(long numBytes)

功能:忽略numBytes个字节,返回实际忽略的字节数

OutputStream类的一些方法:

void close()

功能:关闭输入流。关闭后的写操作会出现IOException

void flush()

功能:刷新缓冲区

void write(int b)

功能:向输出流写入单个字节。参数为整数,它允许不必把参数转换成字节数。

void write(byte buffer[])

功能:向一个输出流写一个完整的字节数组

void write(byte buffer[],int offset,int numBytes)

功能:写数组buffer以buffer[offset]为起点的numBytes个字节区域内的内容。

FileInputStream类(文件输入类):

其创建一个能从文件读取字节的InputStream类,常用构造方法是:

FileInputStream(String filepath);

FileInputStream(File fileObject);

FileOutputStream类(文件输出类):

其创建一个可以向文件写入的类OutputStream,常用构造方法是:

FileOutputStream(String filepath);

FileOutputStream(File fileObject);

FileOutputStream(String filepath,boolean append);

其中append为true时,表示向原文件追加写,即在文件的末尾处开始写。否则则从文件的开始处开始写。

在下面的图示中,我们展现了如何读取一个字节文件和写入一个字节文件。虽然是字节流,我们依然可以定义为文本文档。文件的读取及输出依然遵循:

先用InputStream或OutputStream类定义一个对象,再用其子类FileInputStream或FileOutputStream类进行实例化。然后进行文件读写操作,最后要关闭文件。

InputStream和OutputStream类的多个方法是由其子类实现的

注意可以出现IOException,可以用try{}catch处理,也可以只throw异常