随机读写是相对顺序读写而言的,所谓随机读写,是指可以随机读取文件中内容。随机读写比顺序读写文件更具有灵活性,适用范围更广。顺序读写只适合使用类似于FileStream.read()或者FileReader.readLine()的方式来一段一段,或者一行一行地读取文件,在多数情况下,这样仿佛没有问题。但是,请考虑下面两个场景:
①数据不是整体传输,而是分块传输的:请注意,一般意义上的分块传输,数据块到达接收方(或者说被接收方接受下来)的顺序是不可预料的。一般的多线程下载软件(如网络蚂蚁),采取的做法都是启动多个线程分工抓取网络资源文件的不同分段,在此过程中,哪个数据块先被下载软件接受,那块数据后被接受,是不可预料的。
②在一个大文件中快速定位:有事,我们很明确自己想读取的内容在整个文件中的位置。
在java中,随机读写是通过java.io.RandomAccessFile类实现的,该类仅限于操作文件。RandomAccessFile是用来访问那些保存数据记录的文件的,可以使用seek()方法来访问记录并进行读写,这些记录的大小不必相同,但其大小和位置必须是可知的。
RandomAccessFile是一个完全独立的类(与