7-RandomAccessFile 随机流
package com.io; import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile; import org.junit.Test; /*
* RandomAccessFile:支持随机访问
* 1、即可充当一个输入流,又可充当一个输出流
* 2、支持从任意位置读写
*/
public class RandomAccessFileTest { @Test
public void testRandomAccessFile(){
/*
* 创建RandomAccessFile对象有两个参数,
* 一个是file对象,一个是此RandomAccessFile对象对文件读写的权限,有以下四种
*
* r: 以只读方式打开
* rw:打开以便读取和写入
* rwd:打开以便读取和写入;同步文件内容的更新
* rws:打开以便读取和写入;同步文件内容和元数据的更新 */
RandomAccessFile raf_read = null;
RandomAccessFile raf_write = null;
try {
raf_read = new RandomAccessFile(new File("random.txt"), "r");
raf_write = new RandomAccessFile(new File("random_new.txt"), "rw"); byte[] b = new byte[20];
int len;
while((len = raf_read.read(b)) != -1){
raf_write.write(b, 0, len);
};
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
raf_write.close();
} catch (IOException e) {
e.printStackTrace();
} try {
raf_read.close();
} catch (IOException e) {
e.printStackTrace();
}
}
} @Test
public void 覆盖(){
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(new File("random.txt"), "rw");
raf.seek(3);//把指针移到第3个字节
raf.write("xy".getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
raf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} //单行插入字符
@Test
public void 插入字符串(){
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(new File("random.txt"), "rw");
raf.seek(3);//把指针移到第3个字节
String str = raf.readLine();
System.out.println(raf.getFilePointer());//指针位置
raf.seek(3);
raf.write("xy".getBytes());
raf.write(str.getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
raf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} //多行插入字符
@Test
public void 多行插入字符串(){
RandomAccessFile raf = null;
try {
raf = new RandomAccessFile(new File("random_lines.txt"), "rw");
raf.seek(3);//把指针移到第3个字节
byte [] b = new byte[20];
int len;
StringBuffer sbr = new StringBuffer();
while((len = raf.read(b)) != -1){
sbr.append(new String(b,0,len));
}
System.out.println(raf.getFilePointer());
raf.seek(3);
raf.write("xy".getBytes());
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
raf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
7-RandomAccessFile 随机流的更多相关文章
- Java I/O流输入输出,序列化,NIO,NIO.2
Java IO流 File类: File类是java.io包下代表和平台无关的文件和目录,File不能访问文件内容本身. File类基本操作: System.out.println("判断文 ...
- 关于JAVA中顺序IO的基本操作
关于JAVA中顺序IO的基本操作 写在前面 最近研究一下JAVA中的顺序IO,在网络上找了一会儿,发现少有详细的介绍,顾此在此处说说顺序IO,才学疏浅,如有不对,望赐教. 什么是顺序IO 事实上JAV ...
- Java I/O第二篇 之 (缓冲流 随机流 数组流 数据流)
1:缓冲流 BufferedReader BufferedWriter 具有较强的读写能力,能单独读写一行数据,能够减少对硬盘的访问次数. /** * 缓冲流 能够增强对问价数据的可读性,减少访问读 ...
- Java_io体系之RandomAccessFile简介、走进源码及示例——20
Java_io体系之RandomAccessFile简介.走进源码及示例——20 RandomAccessFile 1. 类功能简介: 文件随机访问流.关心几个特点: 1.他实现的接口不再 ...
- java学习笔记之IO编程—内存流、管道流、随机流
1.内存操作流 之前学习的IO操作输入和输出都是从文件中来的,当然,也可以将输入和输出的位置设置在内存上,这就需要用到内存操作流,java提供两类内存操作流 字节内存操作流:ByteArrayOutp ...
- 文件随机读写专用类——RandomAccessFile
RandomAccessFile类可以随机读取文件,但是在测试中并不好用;File类可以测试文件存不存在,不存在可以创建文件;FileWriter类可以对文件进行重写或者追加内容;FileReade ...
- [Java IO]01_File类和RandomAccessFile类
File类 File类是java.io包中唯一对文件本身进行操作的类.它可以进行创建.删除文件等操作. File类常用操作 (1)创建文件 可以使用 createNewFille() 创建一个新文 ...
- JAVASE02-Unit06: 文件操作——File 、 文件操作—— RandomAccessFile
Unit06: 文件操作--File . 文件操作-- RandomAccessFile java.io.FileFile的每一个实例是用来表示文件系统中的一个文件或目录 package day06; ...
- Java RandomAccessFile用法
RandomAccessFile RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须 ...
- Java: RandomAccessFile
RandeomAccessFile虽然是java.io中的成员,但该类只继承了Object类,实现了DataOut, DataIn, Closeable等接口.此类的实例支持对文件的随机访问和读取.随 ...
随机推荐
- php代码加密
<?php function encode_file_contents($filename) { $type=strtolower(substr(strrchr($filename,'.'),1 ...
- BZOJ3678: wangxz与OJ
splay缩点. #include<bits/stdc++.h> #define L(t) (t)->c[0] #define R(t) (t)->c[1] #define F ...
- PHP中常用的字符串格式化函数总结
注意:在PHP中提供的字符串函数处理的字符串,大部分都不是在原字符串上修改,而是返回一个格式化后的新字符串. 一.取出空格和字符串填补函数 空格也是一个有效的字符,在字符串中也会占据一个位置.用户在表 ...
- https 页面中引入 http 资源的解决方式
相对协议 应用场景 浏览器默认是不允许在 https 里面引用 http 资源的,一般都会弹出提示框. 用户确认后才会继续加载,用户体验非常差. 而且如果在一个 https 页面里动态的引入 http ...
- struts2校验总结
struts校验框架提供两种校验:客户端校验和服务端校验.它们都是主要检查浏览器输入数据是否合法的校验器. 服务端校验 服务端校验是在服务器上检查输入数据,它的实现方法是重写validate()方法. ...
- Wget下载终极用法和15个详细的例子
Wget下载终极用法和15个详细的例子 备注:wget 不支持https 下载,也没有相关https参数,当下载https的时候或以改用 axelWget是一种很好用的因特网下载工具,他具有的很多特 ...
- ios 消息转发初探
有时候服务器的接口文档上一个数据写的是string类型,这时候你就会直接把它赋值给一个label. 问题来了,有时候这个string的确是string,没有问题,有时候又是NSNumber,当然不管三 ...
- JSP-Servlet的工作流程
Servlet基础 1.Servlet概述 JSP的前身就是Servlet.Servlet就是在服务器端运行的一段小程序.一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问 ...
- webstorm 文件历史找回~ 恢复正确状态~
事情的经过时这样的~ 我写好的HTML 我新下载了sublime text3 用这个打开了下 结果都变乱码了~ 大概截个图 都恢复了 就不瞎搞了 webstorm有错误的记录都有真好~ 恢复的具体操 ...
- Nginx + spawn-fcgi- Ubuntu中文
Nginx - Ubuntu中文 页面 讨论 查看源代码 历史 导航 首页 最近更改 随机页面 页面分类 帮助 编辑 编辑指南 沙盒 新闻动态 字词处理 工具 链入页面 相关更改 特殊页面 打印版 ...