Java高级[4]:输入输出流之字节流
的有关信息介绍如下:![Java高级[4]:输入输出流之字节流](/upload/jingyan/2025/0927/e70c784a.jpg)
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异常



