随机访问文件,可以看作一个大型的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[
,是数据的集合 打开文件 两种模式:“rw”(读写),“r”(只读) RandomAccessFile raf = new RandomAccessFile(File,"rw") 文件指针,打开文件时指针在开头...pointer = 0 写方法: raf.write(int)--->只写一个字节(后8位),同时指针指向下一个位置,准备再次写入 读方法: int b = raf.read()--->读一个字节 注意关闭流...= new RandomAccessFile(file,"rw"); System.out.println(randomAccessFile.getFilePointer());...randomAccessFile.write(i>>>8); randomAccessFile.write(i); System.out.println(randomAccessFile.getFilePointer...randomAccessFile.close();
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长度的字节到流
功能简介 我们之前一直说流顺序的,不能随机访问,的确之前说的IO体系的确如此 但是 RandomAccessFile自成一派 此类的实例支持对随机访问文件的读取和写入 我们之前介绍过DataOutput...构造方法中会打开文件文件的打开使用的是本地方法 RandomAccessFile逻辑原理 RandomAccessFile仅仅只能用于文件 RandomAccessFile 对于文件的操纵,就好像是对于一个巨大的数组进行访问一样...存在着一种类似下标索引的东西,可以叫做文件指针 至于到底怎么抽象成这个模型的,底层的实现我们不去关注,我们只关注我们看起来RandomAccessFile的样子就好...如上图所示,这就是RandomAccessFile访问文件的模型可以返回这个文件的文件描述符 FileDescriptor getFD()可以返回当前的文件指针 ...偏移量的设置可能会超出文件末尾,这并不会改变什么 但是一旦你在这个超出文件末尾的偏移量位置写入数据,长度将会改变 也正是此处的这几个方法提供了随机访问的能力 方法简介 RandomAccessFile
上面是读取文件的方式,写文件也一样,我们需要使用输出流,如下图所示: ?...ok 看到这里想必大家都会发现,我对一个文件的读写操作需要new两个类,分别是读流和写流,并且他们的方法并不多 RandomAccessFile类帮我们处理文本 首先观察构造器: ?...如果缓冲b不能被填满,那么读取流的过程将被阻塞, 如果发现是流的结尾,那么会抛出异常。 这个过程就比较像“凑齐一车人在发车,不然不走”。...可以看出RandomAccessFile实现了大部分文件输入输出流的方法,但是底层实现中他实现的是DataInput和DataOutput接口,并非是FileInputStream和FileOutputStream...getRAFWithModelR() throws FileNotFoundException { RandomAccessFile raf = new RandomAccessFile(new
RandomAccessFile类可以随机读取文件,但是在测试中并不好用; File类可以测试文件存不存在,不存在可以创建文件; FileWriter类可以对文件进行重写或者追加内容; FileReader...一般用的时候都是用处理流(Scanner、BufferedReader等)包装; BufferedReader/BufferedWriter类,适合于读写文本文件; BufferedInputStream
二、RandomAccessFile简介 RandomAccessFile既可以读取文件内容,也可以向文件输出数据。...由于RandomAccessFile可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,而不是把文件从头读到尾,使用RandomAccessFile将是更好的选择。...与OutputStream、Writer等输出流不同的是,RandomAccessFile允许自由定义文件记录指针,RandomAccessFile可以不从开始的地方开始输出,因此RandomAccessFile...▐ RandomAccessFile的构造函数 RandomAccessFile类有两个构造函数,其实这两个构造函数基本相同,只不过是指定文件的形式不同—。...▐ RandomAccessFile的重要方法 RandomAccessFile类包含了一个记录指针,用以标识当前读写处的位置,当程序新创建一个RandomAccessFile对象时,该对象的文件记录指针位于文件头
类 RandomAccessFile类是随机读取类,它是一个完全独立的类。...RandomAccessFile类可以实现对文件内容的读写操作,但是比较复杂。所以一般操作文件内容往往会使用字节流或字符流方式。...(1)写入数据 当用 rw 方式声明RandomAccessFile对象时,如果要写入的文件不存在,系统将自行创建。 r 为只读;w 为只写;rw 为读写。 ... rdf = null; // 声明RandomAccessFile类的对象 rdf = new RandomAccessFile(f, "rw");// 读写模式,如果文件不存在... rdf = null ; // 声明RandomAccessFile类的对象 rdf = new RandomAccessFile(f,"r") ;// 以只读的方式打开文件
BufferedReader和RandomAccessFile的区别 RandomAccessFile 在数据越大,性能越差。因为他是数据文件的一个channel,支持读改原数据文件。...那RandomAccessFile的优点?...1.RandomAccessFile忽略了字符编码的处理,加快了处理速度 2.若是对数据操作在BufferedReader创立buffer的时候就做完了,RandomAccessFile自然就快了。...小文件RandomAccessFile,大文件BufferedReader 按行生成文件和按大小生成文件都实现了 BufferedReader提供处理字符编码的方式,使用InputStreamReader...bufSize]; ByteBuffer byteBuf = ByteBuffer.allocate(bufSize); FileChannel channel = new RandomAccessFile
文件系列往期文章: java 字节流入门(文件流) java 字节流入门(内存数组流) 本文介绍如何将内存数组流的数据写入文件流中。...即将内存数组流中的数据通过文件流写到磁盘上,也叫flush,或持久化。毕竟内存是短暂的,磁盘才是永恒。 流就像管道,数据就像管道里的水。...管道最大的魅力就是可以连接,使水从一个管道流到另一个管道,流也一样。 之前我们分别介绍了文件流和内存数组流,既然他们是流,那就应该可以连接起来。那么如何从内存数组流写入文件流呢?...在 java 字节流入门(文件流)中,我们介绍了 FileOutputStream(FOS) 和 RandomAccessFile(RAF) 两种写文件的方式。...那如何将 BAOS 中的数据写入 RandomAccessFile 呢? 解决方案是:把 RandomAccessFile 包装成一个 OutputStream。
RandomAccessFile? ...实现了数据输入输出流,那么 RandomAccessFile 这一个类就可以完成 输入输出的功能了。...RandomAccessFile ras = new RandomAccessFile(file, "r"); byte b = ras.readByte(); System.out.println...(File fileA,File fileB) throws Exception{ RandomAccessFile srcRA = new RandomAccessFile(fileA, "...rw"); RandomAccessFile descRA = new RandomAccessFile(fileB, "rw"); //向 文件 a.txt 中写入数据 srcRA.writeByte
数据传输过程类似于水流,因此称为 IO 流。IO 流在 Java 中分为输入流和输出流,而根据数据的处理方式又分为字节流和字符流。...OutputStream/Writer: 所有输出流的基类,前者是字节输出流,后者是字符输出流。...这里要介绍的随机访问流指的是支持随意跳转到文件的任意位置进行读写的 RandomAccessFile 。...RandomAccessFile 代码示例: RandomAccessFile randomAccessFile = new RandomAccessFile(new File("input.txt")...RandomAccessFile randomAccessFile = new RandomAccessFile(new File("input.txt"), "rw"); randomAccessFile.write
零、前言: 本篇涉及到的流: 1.PrintWriter:字符打印输出流 2.PrintStream:字节打印输出流 3.SequenceInputStream :合并多个字节输入流 4.RandomAccessFile..."; RandomAccessFile raf = new RandomAccessFile(path, "rw"); raf.write("张风捷特烈".getBytes...RandomAccessFile2.png 2.读取 RandomAccessFile rafR = new RandomAccessFile(path, "r"); byte[] buf...字节显示.png 3.seek调节指针读取 RandomAccessFile rafR = new RandomAccessFile(path, "r"); rafR.seek(3);//将读取的指针移到第..."; RandomAccessFile rafRW = new RandomAccessFile(path, "rw"); rafRW.write("张风捷特".getBytes()); rafRW.write
用Java的IO流可以实现从网上下载视频,当然用Python更简单,就是三五行代码的事情。。。。...代码思路 先建立一个链接对象,获取到网页的链接; 从链接对象获取到输入流,读取数据; 建立一个输出流,向本地文件写入数据。...就是获取URL的资源对象,传入的字符串就是对应的地址; 2.HttpURLConnection connection = url.openConnection(); 是获取链接对象,就是靠这个对象来获取流;...8.RandomAccessFile randomAccessFile = new RandomAccessFile(fileName,"rw"); 采用RandomAccessFile建立文件写入对象...= new RandomAccessFile(fullPathName, "rw"); while (downloaded < fileSize) { // 3.1设置缓存流的大小
概念解析 读和写 流就是管道,向管道里面写数据用输出流: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
什么是随机访问流? 随机访问流(RandomAccessFile)是Java IO库中的一种特殊类型的文件流,它可以在文件中进行随机读写操作。...与其他输入输出流不同的是,随机访问流既可以读取文件内容,也可以向文件中写入数据,并且可以通过指定位置来实现对文件的随机访问。 2. 为什么需要随机访问流?...随机访问流的使用示例 下面是一个简单的示例代码,演示了如何使用随机访问流进行文件的随机读写操作: import java.io.RandomAccessFile; public class RandomAccessFileExample...RandomAccessFile file = new RandomAccessFile("test.txt", "rw"); // 写入数据到文件中 ... } catch (Exception e) { e.printStackTrace(); } } } 在上述示例中,我们首先创建了一个RandomAccessFile
一 首先我们要知道 在程序中所有的数据都是以流的方式进行传输或保存的 而流有两种 字节流用来处理字节或二进制对象 字符流主要用来处理字符或字符串,一个字符占两个字节 而上一篇的java 读写操作大文件...BufferedReader和RandomAccessFile BufferedReader正是处理字符流,RandomAccessFile则是处理字节流 两类都分为输入和输出操作。...从上一篇的操作中可以看出,想要用buffer,你还是要先取字节流,再转成字符流 orz //RandomAccessFile操作大数据文件 FileChannel channel = new RandomAccessFile...只是操作的时候用了buffer变成了字符流而已。...三 那么,看了源码之后,我们总算明白为什么大多数io操作,我们都不直接使用字符流的操作,而是取出字节流,把字节流变成我们希望的样子,才用字符流操作吧?
Channel 类似于传统的“流”。只不过 Channel 本身不能直接访问数据,Channel 只能与 Buffer 进行交互。...通道与传统的流操作不同,传统的流操作是分为输入或输出流的,而通道本身是双向操作的,即可以完成输入也可以完成输出。...Java NIO 的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。 通道可以异步地读写。...下面是通过 RandomAccessFile打开 FileChannel 的示例: RandomAccessFile aFile = new RandomAccessFile("d:\\atguigu\...NIO学习篇之通道FileChannel详解 ---- RandomAccessFile参考文章 RandomAccessFile类使用详解
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包含两个方法来操作文件记录指针。
57节介绍了字节流, 58节介绍了字符流,它们都是以流的方式读写文件,流的方式有几个限制: 要么读,要么写,不能同时读和写 不能随机读写,只能从头读到尾,且不能重复读,虽然通过缓冲可以实现部分重读,但是有限制...随机访问 RandomAccessFile内部有一个文件指针,指向当前读写的位置,各种read/write操作都会自动更新该指针,与流不同的是,RandomAccessFile可以获取该指针,也可以更改该指针...BasicDB的设计 在日常的一般文件读写中,使用流就可以了,但在一些系统程序中,流是不适合的,RandomAccessFile因为更接近操作系统,更为方便和高效。...小结 本节介绍了RandomAccessFile的用法,它可以随机读写,更为接近操作系统的API,在实现一些系统程序时,它比流要更为方便高效。...利用RandomAccessFile,我们实现了一个非常简单的键值对数据库,我们演示了这个数据库的用法、接口、设计和实现代码。在这个例子中,我们同时展示了之前介绍的容器和流的一些用法。
领取专属 10元无门槛券
手把手带您无忧上云