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

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和传智播客

原文地址:https://www.cnblogs.com/zhuweiheng/p/8151262.html

时间: 2024-10-14 11:41:26

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

随机访问文件RandomAccessFile 与 内存映射文件MappedByteBuffer

一.RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系

《七》随机访问文件流

1.什么是 随机访问文件流 RandomAccessFile? 该类的实例支持读取和写入随机访问文件. 随机访问文件的行为类似于存储在文件系统中的大量字节. 有一种游标,或索引到隐含的数组,称为文件指针 ; 输入操作读取从文件指针开始的字节,并使文件指针超过读取的字节. 如果在读/写模式下创建随机访问文件,则输出操作也可用; 输出操作从文件指针开始写入字节,并将文件指针提前到写入的字节. 写入隐式数组的当前端的输出操作会导致扩展数组. 文件指针可以通过读取getFilePointer方法和由设置

Java—IO流 RandomAccessFile类

RandomAccessFile java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. java文件模型,在硬盘上的文件是byte byte byte存储的,是数据的集合 打开文件,有两种模式,"rw"读写."r"只读:RandomAccessFile raf = new RandomAccessFile(file, "rw");,文件指针,打开文件时指针在开头 point = 0; 写方法,

利用RandomAccessFile类在指定文件指定位置插入内容

package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.RandomAccessFile; /*利用RandomAccessFile类在指定文件指定位置插入内容.*/ public class InsertContent { public static void ins

PHP 大文件的读取和写入问题

在通常的学习和开发中,因为我们很少会接触到大量数据的读取和写入,所以当突然有了这种需求的时候,我们可 能仍然会按照一些比较快捷的方法,像file_get_contents,fread等方法来读取文件,不过这样以来如果读取的文件太 大,就会产生问题,在实现大文件读取和写入的时候查找了网上的一些资料,不过有些例子给的不是很符合我的需 求,所以我就结合网上已有的例子,再写一篇总结性的博客吧. 那么究竟会产生什么问题呢,这就要说一些PHP的底层实现数,file_get_contents和fread来说一

java中文件的读取和写入

//首先要顶一个file文件用来存放要读取的文件 File f=new File("c:/test/aa.txt"); //在实例化一个输入流,并把文件对象传到里面 FileInputStream inputStream=new FileInputStream(f); //定义一个字节数组,用来存放读取的内容 byte [] b=new byte[(int)f.length()]; int len=0; int temp=0; while((temp=inputStream.read(

《程序实现》从xml、txt文件里读取数据写入excel表格

直接上码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; impo

c++学习笔记—c++对txt文件的读取与写入

一.文件的输入输出 头文件fstream定义了三个类型支持文件IO:ifstream从给定文件读取数据.ofstream向一个给定文件写入数据.fstream读写给定数据.这些类型与cin和cout的操作一样,我们可以用IO操作符来读写文件,还可以用getline从一个ifstream读取数据. 1.getline()函数 getline的函数原型为: [cpp] view plaincopy istream& getline(istream&  is, string& str, 

【C++】文件的读取与写入

C++的文件读取与写入感觉比起其它语言特别地难,对比起<[Python]文件读写操作>(点击打开链接).<[php]让记事本成为你调控变量的控制台>(点击打开链接)与<[Java]输入与输出与JDK1.5之后的新型字符串StringBuilder>(点击打开链接),C++最大的特点就是文件的输入流与输出流分开,同时最关键的是自身并没有字符串变量,在其文件的读取方法变量限制于字符数组char[],需要利用到一个二维的字符数组char[][]才能完事. 同时由于各大的编译器