Java.io.RandomAccessFile

RandomAccessFile Java提供的对文件内容的访问,既可以读文件,也可以写文件。支持随机访问文件,可以访问文件的任意位置。

1)Java文件模型

  在硬盘上的文件是byte byte byte存储的,是数据的集合。

2)打开文件

  有两种模式 rw 读写  r 只读。

  RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw");

  文件指针,打开文件时指针在开头 pointer=0。

3)写方法

  randomAccessFile.write(‘赵‘);//只写了一个字节,同时指针指向下一个位置,准备再次写入

4)读方法

  int b=randomAccessFile.read(...)读一个字节

5)文件读写完成后一定要关闭(Oracle官方说明)

package com.zhao.randomAccessFile;

import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;

public class RandomAccessFileDemo {

public static void main(String[] args) throws IOException {
File directory=new File("demo");
if (!directory.exists()) {
directory.mkdir();
}
File file=new File(directory, "raf.txt");
if (!file.exists()) {
file.createNewFile();
}
RandomAccessFile randomAccessFile=new RandomAccessFile(file, "rw");
//指针的位置
System.out.println(randomAccessFile.getFilePointer());

randomAccessFile.write(‘赵‘);//只写了一个字节
System.out.println(randomAccessFile.getFilePointer());
randomAccessFile.write(‘B‘);
System.out.println(randomAccessFile.getFilePointer());

int i=0x7ffffff;
//用write方法,每次只能写一个字节,如果把i写进去要写4次
randomAccessFile.write(i>>>24);//高8位
randomAccessFile.write(i>>>16);
randomAccessFile.write(i>>>8);
randomAccessFile.write(i);
System.out.println(randomAccessFile.getFilePointer());

//可以直接写一个i
randomAccessFile.writeInt(i);
System.out.println(randomAccessFile.getFilePointer());

String s="中";
byte[] bytes=s.getBytes("gbk");
randomAccessFile.write(bytes);
System.out.println(randomAccessFile.length());
System.out.println(randomAccessFile.getFilePointer());

//读文件,必须把指针移到头部
randomAccessFile.seek(0);
//一次性读取,把文件中的内容都读到字节数组中
byte[] bs=new byte[(int)randomAccessFile.length()];
randomAccessFile.read(bs);

System.out.println(Arrays.toString(bs));
String ss=new String(bs);
System.out.println(ss);

randomAccessFile.close();

}
}

 // Integer.toHexString(b&0xFF)把byte字节数组转换成十六进制。

时间: 2024-11-08 20:54:02

Java.io.RandomAccessFile的相关文章

Java IO RandomAccessFile 任意位置读/写

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

[Java IO]01_File类和RandomAccessFile类

File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作. File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文件. 注意: Windows 中使用反斜杠表示目录的分隔符"\". Linux 中使用正斜杠表示目录的分隔符"/". 最好的做法是使用 File.separator 静态常量,可以根据所在操作系统选取对应的分隔符. (2)删除文件 可以使用 delete() 删除一个文件.

Java—IO流 RandomAccessFile类

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

J2SE知识点归纳笔记(七)---Java IO Part 1:File类与RandomAccessFile类

J2SE知识点归纳笔记(七)---Java IO Part 1:File类与RandomAccessFile类                                                                 --转载请注明出处:coder-pig 本节引言: 兜兜转转,又回来写Java了,上一篇J2SE知识点归纳笔记(六)---Java常用类是上2014.4.14写的,时隔一年 又来重拾之前还没写完的系列了,前些天群里一个妹子反映她Java基础薄弱,然后抱怨在cs

Java IO流 之 RandomAccessFile

http://www.verejava.com/?id=16994711024818 package com.randomaccessfile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFil

Java IO流 之 RandomAccessFile 多线程下载

http://www.verejava.com/?id=16994721196019 package com.randomaccessfile; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFil

RandomAccessFile java IO

1.写入字节 /** * java.io.RandomAccessFile * RAF是专门用来读写文件数据的API,其基于指针对文件任意位置进行读写. */ public class RafDemo1 { public static void main(String[] args) throws IOException { /* * 对当前目录下的raf.dat文件读写数据 */ RandomAccessFile raf = new RandomAccessFile("./raf.dat&qu

Java篇:RandomAccessFile

1 package ares.io; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 6 import java.util.Arrays; 7 8 //Java文件模型操作 9 public class RafSample { 10 11 public static void main(String[] args) throws IOException { 12 /

java io实例具体解释

import java.io.BufferedReader; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileO