Java高级(8.3笔记)

本文详细介绍了Java中的Stream,包括流的分类、FileInputStream和FileOutputStream的使用、字符流的FileReader和FileWriter,以及缓冲输入流BufferedReader和对象字节输入流ObjectInputStream。内容涵盖了流的基本概念、构造方法、常用方法以及文件复制操作。
摘要由CSDN通过智能技术生成

Stream(流):

表示计算机内存和硬盘之间传输数据的通道;

将硬盘中的数据保存到内存中,叫做读进,输入数据,read;InputStream;输入流

将数据从内存保存到硬盘中,叫做写入,输出数据,write;Out普通Stream;输出流;

1,流的分类:

InputStream,字节输入流;

FileInputStream();ObjectInputStream;

OutputStream,字节输出流:

FileoutputStream();ObjectOutputStream;

Reader,字符输入流:

FileReader();BufferedReader();

Writer,字符输出流:

FileWriter();BufferedWrite();

(1),按数据的方向来分:

输入:将数据从硬盘读入计算机内存;

        InputStream;Reader;

输出:将数据从计算机内存写入到硬盘;

        OutoutStream;Writer;

(2),按处理数据的类型来分:

字节流:常用于处理非文本文件:图片,声音等;

        InputStream;Out普通Stream;

字符流:常用于处理文本文件,尤其是txt文件;

Reader;Writer;

(3),流对象的特点:

都是抽象类,都不能创建对象,要使用其子类;

2,FileInputStream(文件字节输入流):

(1),构造方法:

FileInputStream(String filename):使用文件路径的字符串创建;

FileInputStream(File file):使用文件对象创建;

(2),常用方法:

.read():按直接读取文件;返回读取文件的字节数;

.read(byte[ ] bytes):按创建的字节数组读取数据,返回读取的字节数,读取的数据保存在字符数组中;

.close():关闭流对象,释放资源;

3,FileOutputStream(文件字节输出流):

将计算机内存中的数据写入硬盘中,目的文件可以不存在;

(1),构造方法:

- FileOutStream(String filepath):根据字符串文件路径创建对象,写入时文件符进行覆盖;

- FileOutStream(String filepath,Boolean append):根据字符串文件路径创建对象,append为是否追加;

- FileOutStream(File file):根据文件对象创建文件字节输出流;会进行覆盖;

- FileOutStream(File file,Boolean append):根据文件对象创建文件字节流,append是否追加;

(2),常用方法:

.write(int i):写入一字节;

.write(Byte[] bytes):按字节数组写入;返回值为写入的字节数;

.write(Byte[ ] bytes,int off,int length):按自定义的字节数组输入,off为开始输入的位置,length为输入的数组长度;

.flush():冲刷,将通道中的数据冲刷到目的;

.close():关闭流,并进行冲刷;

4,可以利用FileInputStream和OutoutStream进行文件的复制;

//创建读取源文件的流对象;
FileInputStream fis=new FileInputStream(new File(String sourcefilepath));
//创建输入目的文件的流对象;
FileOutputStream fos=new FileOutStream(new File(String targetfilepath));
//创建Byte[]数组对象,规定每次读取的字节数和写入的字节数;
Byte[] bytes=new Byte[1024*1024*8];
//返回每次保存的字节数,读取到返回字节数,没有读取到返回-1;
int count = fis.read(bytes);
//循环读取数据;
while(count != -1){
//一边读取的数据,一边将数组中的数据写入;
fos.write(bytes);
//下一次读取的数据
count=fis.read(bytes);
}
//必须关闭读取的流对象,这样才能将数据flush(冲刷)到目的地;
fos.close();
//关闭读取流对象;
fis.colse();

5,FileReader(文件字符输入流):

按字符读取文件;

(1),构造方法:

FileReader(String filename):根据文件名字字符串来创建对象;

FileReader(File file):根据文件对象创建文件字符输入流对象;

(2),常用方法:

.ready():在读取的时候判断是否还有下一个字符;

.read():逐个读取字符串;

.read(char[] chars):按照自定义的字符串数组大小读取字符串;

.close():关闭字符输入流;

6,FileWrite(文件字符输出流):

将文件按字符写入;

(1),构造方法:

FileWrite(String filename):按照文件名字的字符串进行对象创建;默认会覆盖;

FileWrite(String filename,Boolean append):按照文件名字的字符串创建对象,当为true的时候可以进行追加,不会覆盖;

FileWrite(File file):根据文件对象创建字符输出流对象,会进行覆盖;

FileWrite(File file,Boolean append):根据文件对象创建字符输出流对象,当Boolean值为true的时候进行追加,不会进行覆盖;

(2),常用方法:

.write(String str):直接将字符串作为参数写入;

.write(char[ ] chars):将字符数组作为参数写入;

.write(String str,int off,int length):一字符串作为参数,off定义读取的开始的位置;length,定义读取的长度;

.write(char[ ] chars):将字符数组作为参数,off定义起始位置,length定义读取的长度;

.flush():冲刷,将流中的数据冲刷到硬盘中;

.close():关闭流对象;在写的完成之后必须要调用flush或者close方法,这样才能将流中的数据冲刷到硬盘中;在调用close()之后时进行自动冲刷;

7,BufferedReader(字符缓冲输入流):

自带数组(缓冲区)的字符输入流;默认数组大小为8192,每次最大读取8192个字符;

(1),构造方法:

BufferedReader(Reader reader):参数为Reader();但是Reader()是一个抽象类不能创建,所以用其子类FileReader()作为对象;然后在FileReader中定义需要读取的文件的信息;

BufferedReader(Reader reader,int size):创建指定大小缓冲区的字节缓冲输入流;

(2),常用方法:

.ready():判断是否还有字符需要读入;

.readeLine():按行读取;

.close():关闭输入流对象;

8,ObjectInputStream(对象字节输入流)(反系列化):

反系列化:将系列化文件转换为对象的过程;

(1),构造方法:

ObjectInputStream(InputStream is):使用InputStream作为对象创建,但是InputStream是抽象类不能创建,就只能使用它的子类FIleInputStream作为对象创建;再在FileInputStream,中定义需要进行反系列化的文件的路径;

(2),

.readeObject():读取经过系列化的文件,再返回对象;

.close():关闭输入流对象;

9,转换流:将字节流转对象换为字符流对象:

InputStreamReader():将读取的字节流转换为字符流;

参数是一个字节输入流对象,FileInputStream;

OutputStreamWriter():将要写入的字节流转换为字符流;

参数是一个字节输出流对象,FileOutputStream;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值