作用:读取文件

/**
*
*/
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();
}
}

最新文章

  1. Java设计模式09:单例模式的强化(控制实例个数n)
  2. log4jdbc
  3. LeetCode_N-Queens
  4. python 标准库 -- unittest
  5. Nginx+Django-Python+BPMN-JS的整合工作流实战项目
  6. [Swift]LeetCode898. 子数组按位或操作 | Bitwise ORs of Subarrays
  7. 缓存之Memcache
  8. Android开发三种第三方图片加载的框架
  9. PHP7 网络编程(六)Socket和IO多路复用【待】
  10. SpringSecurityOAuth使用JWT Token
  11. 手把手教你用Strace诊断问题[转]
  12. CocosCreator引擎修改与定制
  13. Linux命令之rmdir
  14. 20151028整理罗列某种开发所包括对技术(技术栈),“较为全面”地表述各种技术大系的图表:系统开发技术栈图、Web前端技术栈图、数据库技术栈图、.NET技术栈图
  15. pycharm快捷键帮助文档Keymap Reference
  16. MVC基于角色权限控制--菜单展示
  17. ThreadLocal 详解
  18. spring boot 项目文件结构
  19. Asynchronous programming with Tornado
  20. 未来人类T5 安装win10,ubuntu双系统

热门文章

  1. Android下载压缩文件与解压案例
  2. Codeforces Round #380 (Div. 1, Rated, Based on Technocup 2017 - Elimination Round 2)
  3. C# 进程和线程
  4. C# 多线程限制方法调用(monitor)
  5. 清除Linux OS 缓存
  6. java 读取properties文件
  7. C++ TR1 Function Bind
  8. 场景7 Data Guard
  9. eclipse 导入工程报错Unable to execute dex: Multiple dex files define Landroid/annotation/SuppressLint
  10. 006 复杂的数据类型&amp;函数(方法)