JavaIO流RandomAccessFile

RandomAccessFile

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

java的文件模型

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

打开文件

两种模式:“rw”(读写),“r”(只读)
RandomAccessFile raf = new RandomAccessFile(File,"rw")
文件指针,打开文件时指针在开头 pointer = 0 

写方法:

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

读方法:

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

注意关闭流

raf.close()

常用操作

getFilePointer() 获取当前指针所在位置

write() 向文件写入byte

writeInt() 向文件写入int

length() 文件长度

read() 读取文件内容

seek() 移动指针位置第几位

Code

    File demofile = new File("E://javaio");      
    if(!demofile.exists()){
        demofile.mkdir();       
        }       
    File file = new File(demofile,"text.dat");       
    
    if (!file.exists()){
         file.createNewFile();       
         }      
    RandomAccessFile randomAccessFile = new RandomAccessFile(file,"rw");
    System.out.println(randomAccessFile.getFilePointer());       
    randomAccessFile.write('A');       
    System.out.println(randomAccessFile.getFilePointer());       
    randomAccessFile.write('B');       
    int i =0x7fffffff;       
    System.out.println(randomAccessFile.getFilePointer());       
    randomAccessFile.write(i>>>24);       
    randomAccessFile.write(i>>>16);       
    randomAccessFile.write(i>>>8);       
    randomAccessFile.write(i);       
    System.out.println(randomAccessFile.getFilePointer());       
    randomAccessFile.seek(0);       
    byte[] buf = new byte[(int)randomAccessFile.length()];       
    randomAccessFile.read(buf);       
    System.out.println(Arrays.toString(buf));       
    randomAccessFile.close(); 

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏封碎

Java多线程参考手册 博客分类: 经典文章转载

http://blog.csdn.net/ring0hx/article/details/6858582

8020
来自专栏小工匠技术圈

【Java小工匠】JavaNIO-缓存区基础

  缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对输入/输出(I/O)的数据作临时存储,这部分预留的内存空间就叫做缓冲区。

12120
来自专栏Google Dart

Dart 服务端开发 shelf_bind 包

shelf_bind倾向于约定优于配置,因此您可以编写必要的最小代码,但仍然可以根据需要覆盖默认值。

10920
来自专栏云瓣

Node.js 异步异闻录

提到 Node.js, 我们脑海就会浮现异步、非阻塞、单线程等关键词,进一步我们还会想到 buffer、模块机制、事件循环、进程、V8、libuv 等知识点。本...

43480
来自专栏公众号_薛勤的博客

Java多线程编程核心技术(三)多线程通信

通过本节可以学习到,线程与线程之间不是独立的个体,它们彼此之间可以互相通信和协作。

14180
来自专栏大前端_Web

NodeJS学习三之API

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

14330
来自专栏雨过天晴

原 Go 的 MogonDB 包 mgo

44930
来自专栏肖洒的博客

爬虫入门(四):urllib2

主要使用python自带的urllib2进行爬虫实验。 写在前面的蠢事: 本来新建了一个urllib2.py便于好认识这是urllib2的实验,结果始终编译不...

10630
来自专栏noteless

ServletRequest HttpServletRequest 请求方法 获取请求参数 请求转发 请求包含 请求转发与重定向区别 获取请求头字段

实际为   HttpServletRequest  或者  ServletRequest,   两者都为接口

27650
来自专栏大内老A

ASP.NET MVC基于标注特性的Model验证:将ValidationAttribute应用到参数上

ASP.NET MVC默认采用基于标准特性的Model验证机制,但是只有应用在Model类型及其属性上的ValidationAttribute才有效。如果我们能...

22580

扫码关注云+社区

领取腾讯云代金券