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

2025-11-20 08:00:10

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

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

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

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

(4)关闭文件流。

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

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

1、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个字节,返回实际忽略的字节数

2、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个字节区域内的内容。

1、FileInputStream类(文件输入类):

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

FileInputStream(String filepath);

FileInputStream(File fileObject);

2、FileOutputStream类(文件输出类):

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

FileOutputStream(String filepath);

FileOutputStream(File fileObject);

FileOutputStream(String filepath,boolean append);

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

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

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢