1.JDK API中RandomAccessFile类的描述

此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte 数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操作从文件指针开始写入字节,并随着对字节的写入而前移此文件指针。写入隐含数组的当前末尾之后的输出操作导致该数组扩展。该文件指针(实现数组随机读写)可以通过 getFilePointer 方法读取,并通过 seek 方法设置。

通常,如果此类中的所有读取例程在读取所需数量的字节之前已到达文件末尾,则抛出 EOFException(是一种 IOException)。如果由于某些原因无法读取任何字节,而不是在读取所需数量的字节之前已到达文件末尾,则抛出 IOException,而不是 EOFException。需要特别指出的是,如果流已被关闭,则可能抛出 IOException。

2.RandomAccessFile演示

  1 public class RandomAccessFileDemo {
  2
  3 	/**
  4 	 * @代码来自传智播客
  5 	 * @param args
  6 	 * @throws IOException
  7 	 */
  8 	public static void main(String[] args) throws IOException {
  9
 10
 11 		/*
 12 		 * RandomAccessFile:
 13 		 * 特点:
 14 		 * 1,只能操作文件。
 15 		 * 2,既能读,又能写。
 16 		 * 3,维护了一个byte数组。内部定义了字节流的读取和写入。
 17 		 * 4,通过对指针的操作可以实现对文件的任意位置的读取和写入。
 18 		 */
 19
 20
 21 //		writeFile();
 22 		readFile();
 23 	}
 24
 25 	public static void readFile() throws IOException {
 26
 27 		RandomAccessFile raf = new RandomAccessFile("tempfile\\random.txt", "r");
 28
 29 		//随机读取,只要通过设置指针的位置即可。
 30 		raf.seek(8*1);
 31
 32 		byte[] buf = new byte[4];
 33 		raf.read(buf);
 34 		String name = new String(buf);
 35
 36 		int age = raf.readInt();
 37
 38 		System.out.println(name+":"+age);
 39
 40 		raf.close();
 41
 42
 43
 44 	}
 45
 46 	public static void writeFile() throws IOException {
 47
 48 		//1,创建一个随机访问文件的对象。文件不存在,则创建,存在,则不创建不覆盖。
 49 		RandomAccessFile raf = new RandomAccessFile("tempfile\\random.txt", "rw");
 50
 51 		//2,写入姓名和年龄。
 52 //		raf.write("张三".getBytes());
 53 //		raf.writeInt(97);//保证整数的字节原样性。
 54 //		raf.write("李四".getBytes());
 55 //		raf.writeInt(99);//保证整数的字节原样性。
 56
 57 		//3,随机写入。
 58 		raf.seek(8);//设置指针的位置。
 59 		raf.write("王武".getBytes());
 60 		raf.writeInt(100);
 61 		System.out.println(raf.getFilePointer());
 62
 63 		raf.close();
 64
 65
 66 	}
 67
 68 }

2017-12-31 内容来自API和传智播客

Java I/O---RandomAccessFile类(随机访问文件的读取和写入)的更多相关文章

  1. Java基础-IO流对象之随机访问文件(RandomAccessFile)

    Java基础-IO流对象之随机访问文件(RandomAccessFile) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.RandomAccessFile简介 此类的实例支持对 ...

  2. Java开发笔记(八十七)随机访问文件的读写

    前面介绍了字符流读写文件的两种方式,包括文件字符流和缓存字符流,但是它们的写操作都存在一个问题:不管是write方法还是append方法,都只能从文件开头写入,而不能追加到文件末尾或者在文件中间某个位 ...

  3. Java I/O(三)各种Reader和Writer读写器、RandomAccessFile随机访问文件、序列化

    2019 01/01 八.Reader和Writer读写器 前面讲的输入输出流的基本单位都是字节,因此可以称为“字节流”,读写器是以字符为基本单位,可以称为“字符流”.它们的使用方法非常相似,因此我考 ...

  4. java 管道流PipedInputStream,PipedInputStream和随机访问文件 RandomAccessFile

    http://blog.csdn.net/zlp1992/article/details/50298195   给个链接自己去看吧.网上资料不是很多,而且自己也不想写了 RandomAccessFil ...

  5. Java IO详解(六)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  6. Java IO详解(七)------随机访问文件流

    File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html Java IO 流的分类介绍:http://www.cnblogs.com/ysocea ...

  7. 18 IO流(十五)——RandomAccessFile随机访问文件及使用它进行大文件切割的方法

    本文部分内容转自:https://blog.csdn.net/nightcurtis/article/details/51384126 1.RandomAccessFile特点 RandomAcces ...

  8. Java随机访问文件

    使用随机访问文件,我们可以从文件读取以及写入文件.使用文件输入和输出流的读取和写入是顺序过程.使用随机访问文件,可以在文件中的任何位置读取或写入.RandomAccessFile类的一个对象可以进行随 ...

  9. Java—IO流 RandomAccessFile类

    RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byt ...

随机推荐

  1. 一个在java后台实现的对图片进行加网纹或水印的工具类

    import java.awt.AlphaComposite; import java.awt.Color; import java.awt.Font; import java.awt.Graphic ...

  2. haproxy1.7编译安装配置

    #haproxy1.7编译安装配置#高可用.负载均衡 使用 #haproxy1.7编译安装配置 #centos7 x86_64 #高可用.负载均衡 使用 #下载 #http://www.haproxy ...

  3. codeforces 895B XK Segments 二分 思维

    codeforces 895B XK Segments 题目大意: 寻找符合要求的\((i,j)\)对,有:\[a_i \le a_j \] 同时存在\(k\),且\(k\)能够被\(x\)整除,\( ...

  4. 河南省第八届ACM省赛---引水工程

    引水工程 时间限制:2000 ms  |  内存限制:65535 KB 难度: 描述 南水北调工程是优化水资源配置.促进区域协调发展的基础性工程,是新中国成立以来投资额最大.涉及面最广的战略性工程,事 ...

  5. WireShark 使用

    1.干货 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料.Wireshark使用WinPCAP作为接口,直 ...

  6. node.js之第一天

    一.http模块 //require表示引包,引包就是引用自己的一个特殊功能 var http = require("http"); //创建服务器,参数是一个回调函数,表示如果有 ...

  7. MySQL数据库数据信息迁移

    环境内核信息: [root@zabbix-01 ~]# uname -a Linux lodboyedu-01 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:2 ...

  8. mustache.js 使用

    对于mustache模板,我是属于即用即查的方法,以下记录仅是我常用的方式.方便以后使用时不用再去项目中去找,因为真的不好找.(此处 -->serious 脸) 当需要渲染一些数据列表的时候,使 ...

  9. 》》初识移动端--rem

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...

  10. Java基础(十一) Stream I/O and Files

    Java基础(十一) Stream I/O and Files 1. 流的概念 程序的主要任务是操纵数据.在Java中,把一组有序的数据序列称为流. 依据操作的方向,能够把流分为输入流和输出流两种.程 ...