Java基础知识5

本文详细介绍了Java中的字节缓冲流(包括输入和输出缓冲流)如何提高读写效率,PrintStream和PrintWriter的区别,以及随机访问流RandomAccessFile的使用,特别关注了其只读、写和断点续传功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字节缓冲流

字节缓冲流分为输入、输出缓冲流。

其中输入缓冲流为BufferedInputStream,从源头到内存读取数据的过程中,不会逐个读取,先将读取到的字节放在缓冲区,通过缓冲区将字节读入到内存,这样可以减少I/O次数,提高读写效率。在定义时,方法如下:BufferedInputStream buffer = new BufferedInputStream(inputStream),其中inputStream为InputStream输入流。

类似地,输入缓冲流为BufferedOutputStream,其原理和上述输入缓冲流类似,先将要写入的字节存放在缓存区,并从内部缓冲区中单独写入字节,定义方法为BufferedOutputStream buffer = new BufferedOutputStream(outputStream),其中outputStream为OutputStream输入流。

打印流

PrintStream为字节打印流(是OutputStream的子类),PrintWriter为字符打印流(是Writer的子类),对于System.out.print("aa"),其中System.out是获取PrintStream对象,print方法调用的是PrintStream对象的write方法。

随机访问流

随机访问流指的是支持随意跳转到文件的任意位置进行读写的RandomAccessFile,随机访问流有以下4种模式:

1、r:只读模式;

2、rw:只写模式;

3、rws:相对于rw,rws模式同步更新对“文件的内容”或“元数据”的修改到外部存储设备,其中元数据是用例描述文件的信息;

4、rwd:相对于rw,rwd同步更新对“文件的内容”的修改到外部存储设备。

RandomAccessFile中有一个文件指针用来表示下一个将要被写入或者读取的字节所处的位置。我们可以通过RandomAccessFile的seek(long pos)方法来设置文件指针的偏移量(距文件开头pos个字节处),如果想要获取文件指针当前的位置,可以使用getFilePointer方法。

RandomAccessFile的一个常见应用场景为断点续传,断点续传指的是在文件传输过程中,若上传失败,再次上传时不需要重传,只需要从上次上传失败的位置继续上传未上传的内容,断点续传需要文件进行分片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值