RAF(RandomAccessFile)类
作用:读取文件
/**
*
*/
package com.io.file;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.util.Arrays;
/**
* <pre>
* <b>.</b>
* <b>Description:</b>
* RandomAccessFile:随机读写文件类
* 读写:文件的写入,只写入一个byte,从后八位写入 读,只读一个byte,读完后,指针自动指向下一个byte
* 文件读写完成后一定关闭
* 模式:两种:rw、r
* 关闭:文件用完即关
* <b>Author:</b> @xieji
* <b>Date:</b> 2016年11月14日 下午2:19:21
* <b>Copyright:</b> Copyright ©2013-2017 https://github.com/Jacob233 (github主页 0.0)
* <b>Changelog:</b>
* Ver Date Author Detail
* --------------------------------------------------------------------------------
* 1.0 2016年11月14日 下午2:19:21 @xieji
* </pre>
*/
public class RAFDemo {
// 随机读写文件测试
public void testRAF() throws IOException {
File demo = new File("demo");
// 判断file是否存在,若不存在则创建
if (!demo.exists()) {
demo.mkdir();
}
// 判断file是否存在文件,若不存在则创建
File content = new File(demo, "raf.txt");
if (!content.exists()) {
content.createNewFile();
}
// 获取读写文件类randomAccessFile(模式为读写rw,还有一种模式是r)
RandomAccessFile raf = new RandomAccessFile(content, "rw");
// raf通过指针实现随机读写
System.out.print(raf.getFilePointer() + " ");// 初始指针
// 写入(指针在移动)
raf.write('A');
System.out.print(raf.getFilePointer() + " ");
raf.write('B');
System.out.print(raf.getFilePointer() + " ");
// 1.写入整形 :写入只能从后八位,测试通过int最大数
int maxInt = 0x7fffffff;
raf.write(maxInt >>> 24 & 0xff);// 向右移动24位,即高八位
raf.write(maxInt >>> 16 & 0xff);
raf.write(maxInt >>> 8 & 0xff);
raf.write(maxInt >>> 0 & 0xff);
// 上述代码,可用下面的一行代替
// raf.writeInt(maxInt);
System.out.print(raf.getFilePointer() + " ");
// 2.写入字符串
String word = "谢ji";
byte b[] = word.getBytes("gbk");
raf.write(b);
System.out.println(raf.length());
System.out.print(raf.getFilePointer() + " ");
raf.writeChars(word);
System.out.print(raf.getFilePointer() + " ");
System.out.println();
// 读取文件
byte[] bytes = new byte[(int) raf.length()];
// 先将指针只会头节点
raf.seek(0);
raf.read(bytes);
System.out.println(Arrays.toString(bytes));
// for (byte c : bytes) {
// System.out.print(Integer.toHexString(c&0xff)+" ");
// }
// 关闭
raf.close();
}
}
RAF(RandomAccessFile)类的更多相关文章
- 使用RandomAccessFile类对文件进行读写
1. RandomAccessFile类简介 前面一篇随笔<File类遍历目录及文件>中有说到,File类只能用于表示文件或目录的名称.大小等信息,而不能用于文件内容的访问.而当需要访 ...
- 【Java IO流】RandomAccessFile类的使用
RandomAccessFile类的使用 RandomAccessFile类是java提供的对文件内容的访问,既可以读文件,也可以写文件. 支持随机访问文件,可以访问文件的任意位置. RandomAc ...
- 输入和输出--RandomAccessFile类
RandomAccessFile 类 RandomAccessFile 类既可以读取文件内容,也可以向文件输出数据. RandomAccessFile 类支持 "随机访问" 的方式 ...
- (转)RandomAccessFile类使用详解
1.RandomAccessFile特点 RandomAccessFile是java Io体系中功能最丰富的文件内容访问类.即可以读取文件内容,也可以向文件中写入内容.但是和其他输入/输入流不同的 ...
- RandomAccessFile类——高效快捷地读写文件
RandomAceessFile类 RandomAccessFile类是一个专门读写文件的类,封装了基本的IO流,在读写文件内容方面比常规IO流更方便.更灵活.但也仅限于读写文件,无法像IO流一样,可 ...
- 利用RandomAccessFile类在指定文件指定位置插入内容
package File; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; ...
- Java基础(二十八)Java IO(5)RandomAccessFile类与过滤器流(Filter Stream)
一.RandomAccessFile类 使用RandomAccessFile类可以读取任意位置数据的文件. 1.构造方法 RandomAccessFile(String name, String mo ...
- Java基础 使用转换流进行文件的复制 / RandomAccessFile 类进行文件的复制
笔记: **使用转换流进行文件的复制 文本文件---字节流FileInputStream--> [InputStreamReader] -----字符流BufferedReader------ ...
- [Java IO]01_File类和RandomAccessFile类
File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作. File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...
- RandomAccessFile类
File类只是针对文件本身进行操作,而如果要对文件内容进行操作,则可以使用RandomAccessFile类,此类属于随机读取类,可以随机地读取一个文件中指定位置的数据. //============ ...
随机推荐
- thunkify 模块
function thunkify(fn){ assert('function' == typeof fn, 'function required'); return function(){ var ...
- 面试复习(C++)之快速排序
#include <iostream> using namespace std; void Quicksort(int *a,int low,int high) { if(low>h ...
- HTML5资料
1 Canvas教程 <canvas>是一个新的用于通过脚本(通常是JavaScript)绘图的HTML元素.例如,他可以用于绘图.制作图片的组合或者简单的动画(当然并不那么简单).It ...
- 使用jQuery,实现完美的表单异步提交
jQuery异步提交表单 <form id="form1" method="post"> <table border="1" ...
- testlink安装
今天安装了一下testlink,完全按照高峻博客里的做法,最后安装成功了 遇到的问题: 问题表现: 新安装TestLink,登录Testlink后,新建一个项目后,会出现如下提示: There are ...
- Android -- 关闭AsyncTask(异步任务)
前面说了如何操作AsyncTask,这篇我们来说一下如何关闭AsyncTask. 有人就问了:为什么要关闭AsyncTask呢?很简单,AsyncTask 是在后台执行耗时操作(获取数据),当你离开当 ...
- 关于ajax跨域请求(cross Domain)
Cross Domain AJAX主要就是A.com网站的页面发出一个XMLHttpRequest,这个Request的url是B.com,这样的请求是被禁止的,浏览器处于安全考虑不允许进行跨域访问, ...
- css中clearfix清除浮动的用法及其原理示例介绍
clearfix的定义: .clearfix:after {}{ content: "."; /**//*内容为“.”就是一个英文的句号而已.也可以不写.*/ display: b ...
- php+mysql的微信文章发布平台
如何在微信上发表丰富图文的文章? 最近在新浪云平台上做了一个php+mysql的微信文章发布平台,丫丫说. 在线编辑文章,扫一扫即可分享到微信,发到朋友圈,非常简单! http://yayashuo. ...
- Apache Tomcat开机后台启动
作为软件开发人员,经常接触Tomcat,完成的项目,需要部署到服务器上的Tomcat,才能供其他人访问浏览. 因为存在以下问题,所以需要把Tomcat设置为后台自动启动: 1.服务器可能因环境故障面临 ...