我们知道Java的文件模型,文件硬盘上的文件是byte byte byte的字节进行存储的,是数据的集合。下面就是用这个类的步骤。
(1)打开指定的文件,有两种模式“rw”(读写) “r”(只读),创建对象,并且指定file和模式,例如:
RandomAccessFile ac=new RandomAccessFile(file,”rw”);
因为它支持随机访问文件,所以他引入了指针,可以通过指针来写入写出在指定的位置。文件指针,打开文件时指针在开头pointer=0
(2)RandomAccessFile的往文件中写的方法(还有其他的写方法)
Ac.write(int)----->只能写一个字节(后八位),同时文件指针也会移动,指向下一个位置。
(3)RandomAccessFile读的方法(还有其他的读方法)
int b=ac.read()--->读一个字节
(4)文件读写完毕后必须要把他关闭,调用close()的方法。下面就是例子:
<span style="color: #008000;">//</span><span style="color: #008000;">创建相对路径的文件,就是在这个项目中创建一个文件夹</span> File file=<span style="color: #0000ff;">new</span> File("random"<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(!<span style="color: #000000;">file.exists()) { file.mkdir(); } File fileName</span>=<span style="color: #0000ff;">new</span> File(file,"javaio.txt"<span style="color: #000000;">); </span><span style="color: #0000ff;">if</span>(!<span style="color: #000000;">fileName.exists()) { fileName.createNewFile();</span><span style="color: #008000;">//</span><span style="color: #008000;">创建文件</span> <span style="color: #000000;"> } </span><span style="color: #008000;">//</span><span style="color: #008000;">创建一个RandomAccessFile的对象,并指定模式rw,能读能写, </span><span style="color: #008000;">//</span><span style="color: #008000;">注意:必须是文件,不能是路径</span> RandomAccessFile raf=<span style="color: #0000ff;">new</span> RandomAccessFile(fileName,"rw"<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">获取此时的文件指针的位置,起始位置为0</span> <span style="color: #000000;"> System.out.println(raf.getFilePointer()); </span><span style="color: #008000;">//</span><span style="color: #008000;">向文件中写入字符A,字符类型有两个字节,但她写入的是后八位的字节 </span><span style="color: #008000;">//</span><span style="color: #008000;">字符A正好可以用后八位的字节表示出来</span> raf.write(‘A‘<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">字符的位置会自动向后移动,文件指针会向后自动移动</span> System.out.println("输入一个字符之后,文件指针的位置"+<span style="color: #000000;">raf.getFilePointer()); raf.write(</span>‘B‘<span style="color: #000000;">); </span><span style="color: #008000;">//</span><span style="color: #008000;">每次write只能写入一个字节,如果要把i写进去,就需要写四次</span> <span style="color: #0000ff;">int</span> i=0x7fffffff<span style="color: #000000;">; raf.write(i</span>>>>24 & 0xff);<span style="color: #008000;">//</span><span style="color: #008000;">写入高八位的</span> raf.write(i>>>16 & 0xff<span style="color: #000000;">); raf.write(i</span>>>>8 & 0xff<span style="color: #000000;">); raf.write(i);</span><span style="color: #008000;">//</span><span style="color: #008000;">写入低八位</span> System.out.println("写入整数的时候文件指针的位置是"+<span style="color: #000000;">raf.getFilePointer()); </span><span style="color: #008000;">/**</span><span style="color: #008000;"> * writeInt()的内置方法 * public final void writeInt(int v) throws IOException { write((v >>> 24) & 0xFF); write((v >>> 16) & 0xFF); write((v >>> 8) & 0xFF); write((v >>> 0) & 0xFF); //written += 4; } </span><span style="color: #008000;">*/</span> <span style="color: #008000;">//</span><span style="color: #008000;">也可以直接写入int整数</span> <span style="color: #000000;"> raf.writeInt(i); </span><span style="color: #008000;">//</span><span style="color: #008000;">写入一个汉字,汉字为两个字节</span> String str="欢迎学习java"<span style="color: #000000;">; </span><span style="color: #0000ff;">byte</span>[] b=str.getBytes("gbk"<span style="color: #000000;">); raf.write(b); System.out.println(</span>"此时的长度为"+<span style="color: #000000;">raf.length()); </span><span style="color: #008000;">//</span><span style="color: #008000;">读文件必须将文件指针放在开头位置</span> raf.seek(0<span style="color: #000000;">); </span><span style="color: #0000ff;">byte</span>[] buf=<span style="color: #0000ff;">new</span> <span style="color: #0000ff;">byte</span>[(<span style="color: #0000ff;">int</span><span style="color: #000000;">)raf.length()]; raf.read(buf);</span><span style="color: #008000;">//</span><span style="color: #008000;">将内容写入buf字节数组中</span> <span style="color: #000000;"> String str1</span>=<span style="color: #0000ff;">new</span> String(buf,"gbk"<span style="color: #000000;">); System.out.println(</span>"文件中的内容为"+<span style="color: #000000;">str1); raf.close();</span>
Java的RandomAccessFile对文件内容进行读写
标签:
本文系统来源:http://www.cnblogs.com/dukc/p/4776868.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!