标签:文本文件 get mod 说明 修改 选择 creat epo 指针
RandomAccessFile类是Java中操作文件内容功能最强大的类,既可以读,也可以写。
RandomAccessFile支持随机访问,可以直接访问文件的任意位置,在文件的任意位置读写数据。如果要随机访问文件内容,RandomAccessFile是很好的选择。
Random,意为随机、任意,RandomAccessFile,即可访问文件的任意位置;RAM(Random Access Memory),即可访问文件/数据任意位置的内存。
构造函数:
mode是一个字符串,指定文件打开方式。可能的值:
RandomAccessFile提供了多种读写数据的方法,能读写多种类型的数据,既能以字符方式进行读写,又能以字节方式进行读写。
RandomAccessFile提供了2个操作记录指针的方法,用于支持随机读写:
InputStream类、Reader类也提供了操作指针的方法,但操作的指针都是读指针,只能在输入流中使用。OutputStream类、Writer类不能操作指针。可以随机读,不能随机写。
RandomAccessFile操作的指针是读写指针,可以在读的时候操作指针,也可以在写的时候操作指针,可以随机读写。
说明:
使用RandomAccessFile实现多线程断点传输、下载(比如迅雷):
1、开始时建立2个文件,通过File类的静态方法createTempFile()创建一个同等大小的空的临时文件,再创建一个文本文件用于记录每个文件指针的位置
2、启动多个线程,每个线程只负责一小节内容的下载。每个线程使用一个单独的byte[]、网络输入流对象、RandomAccessFile对象(向临时文件中写入数据,要随机写)、文件指针(网络输入流对象、RandomAccessFile对象使用的文件指针位置是相同的),使用循环从网络中读取数据,存储在byte[]中,将byte[]中的数据写入到临时文件中。
3、由于用户点击暂停、网络中断、退出程序等原因导致下载中断时,要将每个线程的文件指针位置保存到文本文件中,继续下载时先从文本文件中读取每个线程的指针位置,将每个线程的文件指针位置设置为对应的值(网络输入流对象、RandomAccessFile对象都要设置),然后启动多线程继续下载。
4、完成后重命名临时文件为源文件名。
较忙,以后再补源码。
标签:文本文件 get mod 说明 修改 选择 creat epo 指针
原文地址:https://www.cnblogs.com/chy18883701161/p/10920412.html