博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO(二)--RandomAccessFile基本使用
阅读量:5304 次
发布时间:2019-06-14

本文共 2172 字,大约阅读时间需要 7 分钟。

RandomAccessFile:

  翻译过来就是任意修改文件,可以从文件的任意位置进行修改,迅雷的下载就是通过多个线程同时读取下载文件。例如,把一个文件分为四

部分,四个线程同时下载,最后进行内容拼接

public class RandomAccessFile implements DataOutput, DataInput, Closeable {	public RandomAccessFile(String name, String mode);	public RandomAccessFile(File file, String mode);}

RandomAccessFile实现了DataOutput和DataInput接口,说明可以对文件进行读写

有两种构造方法,一般使用第二种方式

第二个参数mode,有四种模式

代码实例:

@Data@NoArgsConstructor@AllArgsConstructor@ToStringpublic class Student {    private int id;    private String name;    private int sex;}public static void main(String[] args) throws Exception{	String filePath = "D:" + File.separator + "a.txt";	RandomAccessFile accessFile = new RandomAccessFile(new File(filePath), "rw");	Student student = new Student(1004, "sam", 1);	accessFile.writeInt(student.getId());	accessFile.write(student.getName().getBytes());	accessFile.writeInt(student.getSex());}

打开a.txt:

  发现内容为乱码,这是因为系统只识别ANSI格式的写入,其他格式都是乱码。当然如果你在软件、IDE书写txt文件,打开没有乱码,是因为

已经替我们转格式了。

writeUTF():

public static void main(String[] args) throws Exception{	String filePath = "D:" + File.separator + "a.txt";	RandomAccessFile accessFile = new RandomAccessFile(new File(filePath), "rw");	Student student = new Student(1004, "sam", 1);//        accessFile.writeInt(student.getId());//        accessFile.write(student.getName().getBytes());//        accessFile.writeInt(student.getSex());	accessFile.writeUTF(student.toString());}

writeUTF()以与系统无关的方式写入,而且编码为utf-8,打开文件:

文件读取:

public static void main(String[] args) throws Exception{	String filePath = "D:" + File.separator + "a.txt";	RandomAccessFile accessFile = new RandomAccessFile(new File(filePath), "rw");	Student student = new Student();	String s = accessFile.readUTF();	System.out.println(s);}

输出结果:

Student(id=1004, name=sam, sex=1)

这里需要注意,如果是先写文件,然后立刻读取,需要调用accessFile.seek(0);把指针指向首位,因为文件写入最终指针指向末尾了。=

追加内容到末尾:

public static void main(String[] args) throws Exception{	String filePath = "D:" + File.separator + "a.txt";	RandomAccessFile accessFile = new RandomAccessFile(new File(filePath), "rw");	accessFile.seek(accessFile.length());	accessFile.write("最佳内容".getBytes());}

我们首先把指针移动到文件内容末尾

转载于:https://www.cnblogs.com/huigelaile/p/11047101.html

你可能感兴趣的文章
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>
wpf样式绑定 行为绑定 事件关联 路由事件实例
查看>>
利用maven管理项目之POM文件配置
查看>>
TCL:表格(xls)中写入数据
查看>>
Oracle事务
查看>>
String类中的equals方法总结(转载)
查看>>
属性动画
查看>>
标识符
查看>>
给大家分享一张CSS选择器优选级图谱 !
查看>>
Win7中不能调试windows service
查看>>