首页
学习
活动
专区
工具
TVP
发布

IORandomAccessFile

随机访问文件,可以看作一个大型的byte[]数组,不算是IO体系中的一员,内部封装了字节输入输出,可以设置权限,可以调整指针的位置 获取RandomAccessFile对象,构造参数:String文件名称...,String的文件模式 调用RandomAccessFile对象的write()方法,参数:byte[]数组 获取RandomAccessFile对象,构造参数:String文件名称,String的文件模式...调用RandomAccessFile对象的seek()方法,调整指针位置,参数:int的索引位置 调用RandomAccessFile对象的skipBytes()方法,可以跳过指定索引,参数:int索引位置...多线程下载的原理就是使用这个类 import java.io.RandomAccessFile; public class RandomAccessFileDemo { /**...raf=new RandomAccessFile("test2.txt", "rw"); raf.seek(6);//调整指针位置 byte[] b=new byte[

40520
您找到你想要的搜索结果了吗?
是的
没有找到

RandomAccessFile&IO&排序&方法论

RandomAccessFile&IO&排序&方法论 我们总觉得历史是极其遥远的东西,与我们并无关联,又觉得历史隐藏在图书馆的旧书之中。 然而,我们每个人都有真真切切的历史。那便是每日的历史。...——尼采 《快乐的知识》 RandomAccessFile 以下是昨天对RandomAccessFile的具体练习: 1 package Zhang; 2 3 4 5 import...下面是对明天即将进一步学习IO做的准备: IO(输入流、输出) 字节流、字符(也就是以字节为单位,或者以字符为单位) 字节流:InputStream、OutputStream两个抽象类 InputStream...(byte buf,int start,int size);从byte数组的start位置读取长度为size的字节 输出基本方法: lout.write(int b)写出一个byte到,b的底八位。...lout.write(byte[] buf)将buf字节数组都写到 lout.write(byte[] buf,int start,int size)字节数组buf从start位置开始写size长度的字节到

56970

JavaIO之RandomAccessFile

功能简介 我们之前一直说顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutput...构造方法中会打开文件文件的打开使用的是本地方法 RandomAccessFile逻辑原理 RandomAccessFile仅仅只能用于文件 RandomAccessFile 对于文件的操纵,就好像是对于一个巨大的数组进行访问一样...存在着一种类似下标索引的东西,可以叫做文件指针 至于到底怎么抽象成这个模型的,底层的实现我们不去关注,我们只关注我们看起来RandomAccessFile的样子就好...如上图所示,这就是RandomAccessFile访问文件的模型可以返回这个文件的文件描述符     FileDescriptor getFD()可以返回当前的文件指针              ...偏移量的设置可能会超出文件末尾,这并不会改变什么 但是一旦你在这个超出文件末尾的偏移量位置写入数据,长度将会改变 也正是此处的这几个方法提供了随机访问的能力 方法简介 RandomAccessFile

93330

RandomAccessFile简介与使用

上面是读取文件的方式,写文件也一样,我们需要使用输出,如下图所示: ?...ok 看到这里想必大家都会发现,我对一个文件的读写操作需要new两个类,分别是读和写,并且他们的方法并不多 RandomAccessFile类帮我们处理文本 首先观察构造器: ?...如果缓冲b不能被填满,那么读取的过程将被阻塞, 如果发现是的结尾,那么会抛出异常。 这个过程就比较像“凑齐一车人在发车,不然不走”。...可以看出RandomAccessFile实现了大部分文件输入输出的方法,但是底层实现中他实现的是DataInput和DataOutput接口,并非是FileInputStream和FileOutputStream...getRAFWithModelR() throws FileNotFoundException { RandomAccessFile raf = new RandomAccessFile(new

52210

RandomAccessFile 解决多线程下载及断点续传

二、RandomAccessFile简介 RandomAccessFile既可以读取文件内容,也可以向文件输出数据。...由于RandomAccessFile可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,而不是把文件从头读到尾,使用RandomAccessFile将是更好的选择。...与OutputStream、Writer等输出不同的是,RandomAccessFile允许自由定义文件记录指针,RandomAccessFile可以不从开始的地方开始输出,因此RandomAccessFile...▐ RandomAccessFile的构造函数 RandomAccessFile类有两个构造函数,其实这两个构造函数基本相同,只不过是指定文件的形式不同—。...▐ RandomAccessFile的重要方法 RandomAccessFile类包含了一个记录指针,用以标识当前读写处的位置,当程序新创建一个RandomAccessFile对象时,该对象的文件记录指针位于文件头

1.3K51

java 字节流入门(内存数组->文件

文件系列往期文章: java 字节流入门(文件) java 字节流入门(内存数组) 本文介绍如何将内存数组的数据写入文件中。...即将内存数组中的数据通过文件写到磁盘上,也叫flush,或持久化。毕竟内存是短暂的,磁盘才是永恒。 就像管道,数据就像管道里的水。...管道最大的魅力就是可以连接,使水从一个管道流到另一个管道,也一样。 之前我们分别介绍了文件和内存数组,既然他们是,那就应该可以连接起来。那么如何从内存数组写入文件呢?...在 java 字节流入门(文件)中,我们介绍了 FileOutputStream(FOS) 和 RandomAccessFile(RAF) 两种写文件的方式。...那如何将 BAOS 中的数据写入 RandomAccessFile 呢? 解决方案是:把 RandomAccessFile 包装成一个 OutputStream。

79210

Java文件IO的操作总结

概念解析 读和写 就是管道,向管道里面写数据用输出:write 从管道里面读数据,用输入流:read 的分类 ,按照不同的维度有不同的分类,按照从中每次读取数据单位不同,划分为字节流字符。...按照-对应操作的角色的不同(是IO设备,还是其他)是否能够直接向特定的IO设备如文件、网络、磁盘等,能够直接与这些进行读写的称之为节点, 对节点流进一步封装的,通过封装后的流来实现读写功能,处理也被称为高级...注意事项 1、和数组不一样,不能通过索引读写数据。在中,你也不能像数组那样前后移动读取数据,除非使用RandomAccessFile 处理文件。 2、仅仅只是一个连续的数据。..._FILE_PATH); try { RandomAccessFile randomAccessFile = new RandomAccessFile(file,..., randomAccessFile.skipBytes(3); System.out.println("file now pointer is "+randomAccessFile.getFilePointer

27020

【面试题精讲】java随机访问

什么是随机访问? 随机访问(RandomAccessFile)是Java IO库中的一种特殊类型的文件,它可以在文件中进行随机读写操作。...与其他输入输出不同的是,随机访问既可以读取文件内容,也可以向文件中写入数据,并且可以通过指定位置来实现对文件的随机访问。 2. 为什么需要随机访问?...随机访问的使用示例 下面是一个简单的示例代码,演示了如何使用随机访问流进行文件的随机读写操作: import java.io.RandomAccessFile; public class RandomAccessFileExample...RandomAccessFile file = new RandomAccessFile("test.txt", "rw");             // 写入数据到文件中             ...        } catch (Exception e) {             e.printStackTrace();         }     } } 在上述示例中,我们首先创建了一个RandomAccessFile

14940

字节流与字符,字节流和字符的使用哪个多?

一 首先我们要知道 在程序中所有的数据都是以的方式进行传输或保存的 而有两种 字节流用来处理字节或二进制对象 字符主要用来处理字符或字符串,一个字符占两个字节 而上一篇的java 读写操作大文件...BufferedReader和RandomAccessFile BufferedReader正是处理字符RandomAccessFile则是处理字节流 两类都分为输入和输出操作。...从上一篇的操作中可以看出,想要用buffer,你还是要先取字节流,再转成字符 orz //RandomAccessFile操作大数据文件 FileChannel channel = new RandomAccessFile...只是操作的时候用了buffer变成了字符而已。...三 那么,看了源码之后,我们总算明白为什么大多数io操作,我们都不直接使用字符的操作,而是取出字节流,把字节流变成我们希望的样子,才用字符操作吧?

87810

(60) 随机读写文件及其应用 - 实现一个简单的KV数据库 计算机程序的思维逻辑

57节介绍了字节流, 58节介绍了字符,它们都是以的方式读写文件,的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但是有限制...随机访问 RandomAccessFile内部有一个文件指针,指向当前读写的位置,各种read/write操作都会自动更新该指针,与不同的是,RandomAccessFile可以获取该指针,也可以更改该指针...BasicDB的设计 在日常的一般文件读写中,使用就可以了,但在一些系统程序中,是不适合的,RandomAccessFile因为更接近操作系统,更为方便和高效。...小结 本节介绍了RandomAccessFile的用法,它可以随机读写,更为接近操作系统的API,在实现一些系统程序时,它比要更为方便高效。...利用RandomAccessFile,我们实现了一个非常简单的键值对数据库,我们演示了这个数据库的用法、接口、设计和实现代码。在这个例子中,我们同时展示了之前介绍的容器和的一些用法。

1K60
领券