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等接口.此类的实例支持对文件的随机访问和读取.随 ...
随机推荐
- django1.8 提示(1_8.W001) The standalone TEMPLATE_* settings were deprecated in Django 1.8 and the TEMPLATES dictionary takes precedence. You must put the values of the following settings into your defau
原因是升级之后不推荐使用单独的 TEMPLATES_DIR这样的设置了,使用TEMPLATE = []这种就好了 详细见https://openedx.atlassian.net/browse/TNL ...
- 北京地铁站点遍历最少经站次数问题普遍意义上是一个NP问题,目前不存在多项式时间算法能够解决该问题
http://www.cnblogs.com/jiel/p/5852591.html 众所周知求一个图的哈密顿回路是一个NPC问题: In the mathematical field of grap ...
- Spring data jpa批量插入和更新
http://blog.csdn.net/wangshfa/article/details/27323297 1 public interface BatchDao<T> { 2 ...
- Linux系统被入侵后处理经历
服务器托管在外地机房. 突然,频繁收到一组服务器ping监控不可达邮件,赶紧登陆zabbix监控系统查看流量状况. 可见流量已经达到了800M左右,肯定不正常,马上尝试SSH登陆系统,不幸的事,这种情 ...
- Bumped Map And Normal Map
http://freespace.virgin.net/hugo.elias/graphics/x_polybm.htm 先留着,准备以后开垦
- 八数码问题(紫薯P199)
#include <algorithm> #include <cstdio> #include <cstring> #include <iostream> ...
- 【原】使用webpack打包的后,公共请求路径的配置问题
在我们公司,和后台接接口时,公共的请求路径我们是单独抽出来的,放在一个独立的public.js中,在public.js中存入那个公共变量 公共变量是这样 在其他地方使用ajax时,我们就这样使用 这种 ...
- c++异常捕获
概念: “C++异常”就是 try{}catch(...){} “SEH异常”就是 __try{} __except(-//){} (关于这两种异常,如有不了解的地方,网上有很多资料可以参考) 目前微 ...
- iocp还是select
上一个项目libevent应该是select,现在libuv是iocp,都知道Windows下iocp比select效率高,boost asio 也是iocp,但具体使用select和iocp发现没有 ...
- phpexcel操作
<?php include './PHPExcel/PHPExcel.php'; include './PHPExcel/PHPExcel/Writer/Excel2007.php'; //或者 ...