首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IO流(RandomAccessFile)

随机访问文件,可以看作一个大型的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[

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

    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长度的字节到流

    59370

    JavaIO之RandomAccessFile

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

    99130

    RandomAccessFile简介与使用

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

    56110

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

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

    1.7K62

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

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

    85610

    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

    31420

    【面试题精讲】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

    24340

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

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

    93410

    Java的文件读写操作

    file(内存)—-输入流—->【程序】—-输出流—->file(内存) 当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader...void main(String[] args) { // TODO Auto-generated method stub // file(内存)----输入流---->【程序】----输出流-...(IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // 向文件写入内容(输出流)...Java RandomAccessFile的使用 Java的RandomAccessFile提供对文件的读写功能,与普通的输入输出流不一样的是RamdomAccessFile可以任意的访问文件的任何地方...RandomAccessFile的对象包含一个记录指针,用于标识当前流的读写位置,这个位置可以向前移动,也可以向后移动。RandomAccessFile包含两个方法来操作文件记录指针。

    1.2K30

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

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

    1.1K60
    领券