RandomAccessFile类初次使用


RandomAccessFile :


java提供的对文件内容的访问 既可以读文件 也可以写文件


支持随机访问文件 可以访问文件的任意位置


(1)java文件模型 :


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


(2)打开文件


有两种模式 rw 读写 r只读


RandomAccessFile raf=new RandomeAccessFile(file,"rw");


文件指针, pointer=0;


(3)写方法


raf.write(int) ----> 只写一个字节 (后8位) 同时指针指向下一个位置 准备再次写入


(4)读方法


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


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



raf.getFilePointer()获取当前指针位置


raf.length()获取文件长度


raf.seek()把指针指定到某一位置


1 import java.io.File;
 2 import java.io.IOException;
 3 import java.io.RandomAccessFile;
 4 import java.util.Arrays;
 5
 6
 7
 8
 9 public class RafDemo {
10
11     /**
12      * @param args
13      */
14     public static void main(String[] args) throws IOException{
15         File demo=new File("demo");
16         if(!demo.exists())
17             demo.mkdir();
18         File file=new File(demo,"raf.dat");
19         if(!file.exists())
20         {
21             file.createNewFile();
22         }
23
24         RandomAccessFile raf=new RandomAccessFile(file, "rw");
25         //指针的位置
26          System.out.println(raf.getFilePointer());
27
28          raf.write(‘A‘);//只写了一个字节
29          System.out.println(raf.getFilePointer());
30          raf.write(‘B‘);
31
32          int i=0x7fffffff;
33          //用write每次只能写一个字节,要写4次
34          //0xff=00000000 00000000 00000000 11111111
35          //和 byte(8bit)与上后其实是给int(4byte)的前24位补0,取得是后8位。
36          raf.write(i>>>24);//高8位
37          raf.write(i>>>16);
38          raf.write(i>>>8);
39          raf.write(i);
40          System.out.println(raf.getFilePointer());
41
42          //可以直接写入一个int
43          raf.writeInt(i);
44          System.out.println(raf.getFilePointer());
45
46          String s="中";
47          byte[] gbk=s.getBytes("gbk");
48          raf.write(gbk);
49          System.out.println(raf.getFilePointer());
50
51          //读文件,把指针移动头部
52          raf.seek(0);
53          //一次性读取,把文件中的内容都读到字节数组中
54          byte[] buf=new byte[(int) raf.length()];
55          raf.read(buf);
56          System.out.println(Arrays.toString(buf));
57
58          String s1=new String(buf,"gbk");
59         // System.out.println(s1);
60          for (byte b : buf) {
61             System.out.print(Integer.toHexString(b& 0xff)+" ");
62         }
63          raf.close();
64     }
65
66 }
时间: 2024-08-03 05:27:27

RandomAccessFile类初次使用的相关文章

java RandomAccessFile类文件基本操作

RandomAccessFile类是java中仿C的文件操作方法,下面通过实例演示RandomAccessFile类对文件的基本操作,深入了解请查看Java API文档.(注:RandomAccessFile类大多不被采用) 上代码 import java.io.*; public class AccessFileDemo { public static void main(String[] args) { Student stu1=new Student("Zhang San",10

[Java IO]01_File类和RandomAccessFile类

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

【Java IO流】RandomAccessFile类的使用

RandomAccessFile类的使用 RandomAccessFile类是java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. RandomAccessFile类实现步骤 (1)文件模型 第一步要知道,在硬盘上的文件时是以byte byte byte存储的,是数据的集合. (2)打开文件 打开文件硬盘上的文件有两种模式:“rw”(读写),“r”(只读).可以用RandomAccessFile类来指定打开文件的模式,如: RandomAcce

JavaIO流(02)RandomAccessFile类详解

RandomAccessFile类 该类主要是对文件内容进行操作,可以随机的读取一个文件中指定位置的数据: 但是如果想实现这样的功能,则每个数据的长度应该保持一致: 构造方法: 接受File类中的对象,但是在设置时需要设置模式,r:只读:w:只写:rw:读写(常用) public RandomAccessFile(File file, String mode)throws FileNotFoundException 不再使用File类对象表示文件,而是直接输入了一个固定的文件路径 public 

RandomAccessFile类

转自http://blog.csdn.net/akon_vm/article/details/7429245 RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream类系的.实际上,除了实现DataInput和DataOutput接口

利用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

java基础知识回顾之javaIO类--RandomAccessFile类

java.io 类 RandomAccessFile java.lang.Object java.io.RandomAccessFile1.该类不是IO流中的子类.2.该类既能读又能写.3.该对象内部分装了一个字节数组,通过指针可以操作数组中的元素.4.其实该对象就是将字节输入流和输出流进行了封装.5.该对象只能对文件操作,目的和源只能是文件对象.通过看构造方法可以看得出来.RandomAccessFile(File file, String mode) RandomAccessFile(Str

File类和RandomAccessFile类?

转载: Java IO的RandomAccessFile的使用 01_File类和RandomAccessFile类 现有如下的一个需求,向已存在1G数据的txt文本里末尾追加一行文字,内容如下"Lucene是一款非常优秀的全文检索库".可能大多数朋友会觉得这个需求很easy,说实话,确实easy,然后XXX君开始实现了,直接使用Java中的流读取了txt文本里原来所有的数据转成字符串后,然后拼接了"Lucene是一款非常优秀的全文检索库",又写回文本里了,至此,大

Java IO流 序列三:RandomAccessFile类

3. RandomAccessFile类 3.1 RandomAccessFile类简介 1. 是Java提供的对文件内容的访问,既可以读文件,也可以写文件 2. 可以随机访问文件,可以访问文件的任意位置 3. 读写方式:rw(可读写), r(只读) 例:RandomAccessFile raf = new RandomAccessFile(file,"rw") 4. 由于是随机访问,该类提供了一个指针,默认打开文件的时候指正文件在开头 pointer = 0 5. 写方法 raf.w