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等接口.此类的实例支持对文件的随机访问和读取.随 ...
随机推荐
- django redirect的几种方式
You can use the redirect() function in a number of ways. By passing some object; that object’s get_a ...
- 《JavaScript权威指南》学习笔记 第五天 window对象的方法。
前天和昨天大致浏览了犀牛书的函数.类与模块.正则表达式.JavaScript扩展.以及服务端的js.这些方面对于我目前的水平来说比较难,一些最基本的概念都不能领会.不过最复杂的知识占用平时使用的20% ...
- 堆优化的Dijkstra
SPFA在求最短路时不是万能的.在稠密图时用堆优化的dijkstra更加高效: typedef pair<int,int> pii; priority_queue<pii, vect ...
- SQL ALTER TABLE 语句在项目中的使用
1.在实际的项目开发过程中,之前已经创建好的实体类可能需要增加/删除字段,亦或是更改已有字段的属性,比如主键的增长策略从自增型改为UUID型,那么就会涉及到 SQL 中 alter table 语句的 ...
- vim 使用总结
VIM分屏显示 1 . 水平分屏split(sp) || 垂直分屏vsplit(vs) :(v)split 输入这样的命令后vi就会将当前的窗口平分为两个,并且在这两个窗口中显示的是同一篇文章.如 ...
- oc面向对象特性: 多态
多态:不同对象以自己的方式响应相同的消息的能力叫做多态. 多态的主要好处就是简化了编程接口.在类与类之间可以重复命名. 下面的例子是一个彩色打印机和黑白打印机这两种打印机,然后Person类中有一 ...
- linux 开机启动过程详解
Linux开机执行内核后会启动init进程,该进程根据runlevel(如x)执行/etc/rcx.d/下的程序,其下的程序是符号链接,真正的程序放在/etc/init.d/下.开机启动的程序(服务等 ...
- 安装weinre在PC端调试移动端
1.使用node安装weinre. 2.启动weinre, weinre --httpPort 8081 --boundHost -all- 3.在浏览器打开 http://localhost:80 ...
- jquery 判断网络图片,或网络文件是否存在
$.ajax({ url : picSrc, async : false, type : 'HEAD', error : function() { picSrc = "https://ss0 ...
- Yii URL
参考文章: http://blog.csdn.net/iefreer/article/details/21325371 以http://localhost/basic/web/index.php?r= ...