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;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays; public class RafDemo { /**
* @param args
*/
public static void main(String[] args) throws IOException{
File demo=new File("demo");
if(!demo.exists())
demo.mkdir();
File file=new File(demo,"raf.dat");
if(!file.exists())
{
file.createNewFile();
} RandomAccessFile raf=new RandomAccessFile(file, "rw");
//指针的位置
System.out.println(raf.getFilePointer()); raf.write('A');//只写了一个字节
System.out.println(raf.getFilePointer());
raf.write('B'); int i=0x7fffffff;
//用write每次只能写一个字节,要写4次
//0xff=00000000 00000000 00000000 11111111
//和 byte(8bit)与上后其实是给int(4byte)的前24位补0,取得是后8位。
raf.write(i>>>24);//高8位
raf.write(i>>>16);
raf.write(i>>>8);
raf.write(i);
System.out.println(raf.getFilePointer()); //可以直接写入一个int
raf.writeInt(i);
System.out.println(raf.getFilePointer()); String s="中";
byte[] gbk=s.getBytes("gbk");
raf.write(gbk);
System.out.println(raf.getFilePointer()); //读文件,把指针移动头部
raf.seek(0);
//一次性读取,把文件中的内容都读到字节数组中
byte[] buf=new byte[(int) raf.length()];
raf.read(buf);
System.out.println(Arrays.toString(buf)); String s1=new String(buf,"gbk");
// System.out.println(s1);
for (byte b : buf) {
System.out.print(Integer.toHexString(b& 0xff)+" ");
}
raf.close();
} }

RandomAccessFile类初次使用的更多相关文章

  1. [Java IO]01_File类和RandomAccessFile类

    File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作.   File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...

  2. RandomAccessFile类

    File类只是针对文件本身进行操作,而如果要对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机地读取一个文件中指定位置的数据. //============ ...

  3. DataInputStream类和RandomAccessFile类的使用方法

    // DataInputStream类实现了DataInput接口,要想从文件中读入二进制数据, // 你需要将DataInputStream与某个字节源相结合,例如FileInputStream / ...

  4. File类和RandomAccessFile类

    目录 File类     File类常用操作     (1)创建文件     (2)删除文件     (3)创建文件夹     (4)列出指定目录全部文件     (5)删除目录 RandomAcce ...

  5. JavaIO流(02)RandomAccessFile类详解

    RandomAccessFile类 该类主要是对文件内容进行操作,可以随机的读取一个文件中指定位置的数据: 但是如果想实现这样的功能,则每个数据的长度应该保持一致:   构造方法:   接受File类 ...

  6. 通过扩展RandomAccessFile类使之具备Buffer改善I/O性能--转载

    主体: 目前最流行的J2SDK版本是1.3系列.使用该版本的开发人员需文件随机存取,就得使用RandomAccessFile类.其I/O性能较之其它常用开发语言的同类性能差距甚远,严重影响程序的运行效 ...

  7. 使用RandomAccessFile类对文件进行读写

    1. RandomAccessFile类简介   前面一篇随笔<File类遍历目录及文件>中有说到,File类只能用于表示文件或目录的名称.大小等信息,而不能用于文件内容的访问.而当需要访 ...

  8. 【Java IO流】RandomAccessFile类的使用

    RandomAccessFile类的使用 RandomAccessFile类是java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. RandomAc ...

  9. 输入和输出--RandomAccessFile类

    RandomAccessFile 类 RandomAccessFile 类既可以读取文件内容,也可以向文件输出数据. RandomAccessFile 类支持 "随机访问" 的方式 ...

随机推荐

  1. c# 即使服务又是可执行程序的代码实现

    先看下代码 namespace UpdaterServer { class Program { static void Main(string[] args) { ) { ServiceBase[] ...

  2. Pi

    Math]Pi   数学知识忘地太快,在博客记录一下pi的生成. 100 Decimal places 3.1415926535897932384626433832795028841971693993 ...

  3. SOCKET网络编程细节问题(4)

    SOCKET网络编程快速上手(二)——细节问题(4) 5.慢系统调用及EINTR 还记得前面readn和writen函数么?里面有个EINTR,现在就来谈谈这个,这个很重要. Linux世界有个叫信号 ...

  4. EasyUI DataGrid及Pagination

    接上一篇EasyUI项目驱动学习 DataGrid数据表格及Pagination分页一起介绍 一.通过<table>标记创建DataGrid,嵌套<th>标签定义列表 < ...

  5. ORA-12520错误解决方法

    ORA-12520监听程序无法为请求的服务器类型找到可用的处理程序 以下不知道是不是解决方法的方法,因为我只重启下oracle服务就好了,并没进行任何修改 引用别人的文章: 1)数据库是专用服务器,但 ...

  6. ASP.NET MVC:多语言的三种技术处理策略

    ASP.NET MVC:多语言的三种技术处理策略 背景 本文介绍了多语言的三种技术处理策略,每种策略对应一种场景,这三种场景是: 多语言资源信息只被.NET使用. 多语言资源信息只被Javascrip ...

  7. IOS Objective-C 协议,委托

    IOS Objective-C 协议,委托 IOS开发使用的语言Objective-C(以下简称OBJ-C)是一种扩展自C语言的面向对象语言.在OBJ-C中有一个很重要概念:消息.在最近的学习当中逐渐 ...

  8. 搭建基于springmvc,ibatis的工程实现读写分离,配置分离

    实现读写分离: 1.spring配置如下:spring-dataResource.xml <?xml version="1.0" encoding="UTF-8&q ...

  9. service structure flowchart [mobile to server via HTTP RESTful API]

    Modern flowchart for mobile, server, and etc.. communication This has something to do with these sou ...

  10. Web基础知识和技术

    WEB是一个外延广泛的概念,不单单指网站,乌徒帮专注拥有WEB界面的网站开发,帮助初学者或已经进入开发的朋友们提供参考讨论平台,然而并不一定能将所有的WEB知识讲全讲透,只是能满足初涉者的建站需求,能 ...