IOの随机流
来源:互联网 发布:怎么在淘宝上做充值 编辑:程序博客网 时间:2024/05/16 19:00
随机存取文件流
RandomAccessFile类支持“随机访问”的方式,程序可以直接跳到文件的任意地方来读写文件
支持只访问的部分内容
可以向已存在的文件后追加内容
RandomAccessFile对象包含一个记录指针,用以标志当前读写处的位置。RandomAccessFile类对象可以自由移动记录指针:
long getFilePointer():获取文件记录指针的当前位置
void seek(long pos):将文件记录指针定位到pos位置
构造器
public RandomAccessFile(File file,String mode)
public RandomAccessFile(String name,String mode)
mode有四种:
r:以只读方式打开
rw打开以便读取和写入
rwd打开以便读取和写入:同步文件内容的更新
rws打开以便读取和写入:同步文件内容和元数据的更新
package IO;import java.io.File;import java.io.FileNotFoundException;import java.io.IOException;import java.io.RandomAccessFile;import java.util.concurrent.locks.ReadWriteLock;import org.junit.Test;/* * RandomAccessFile:支持随机访问 * 1.既可以充当一个输入流,又可以充当一个输出流 * 2.支持从文件的开头读取、写入 * 3.支持从任意位置读取或写入(插入) * */public class TestRandomAccessFile {// 重构test3使得插入更通用(不止是一行的,整个文章的特定位置插入)@Testpublic void test4() {RandomAccessFile randomAccessFile = null;try {randomAccessFile = new RandomAccessFile(new File("HelloIO"), "rw");randomAccessFile.seek(3);// String string = randomAccessFile.readLine();// 将文章后面的字节,以每10个为单位添加到sb中StringBuffer sBuffer = new StringBuffer();byte[] bs = new byte[10];int len;while ((len = randomAccessFile.read(bs)) != -1) {// sBuffer.append(bs);//不对,因为bs是字节数组,而append参数应该是字符串sBuffer.append(new String(bs, 0, len));}randomAccessFile.seek(3);randomAccessFile.write("xy".getBytes());randomAccessFile.write(sBuffer.toString().getBytes());} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (randomAccessFile != null) {try {randomAccessFile.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}// 在文件的某个位置完成插入:/* * 先把指针移动对应位置 读出指针后面的一行到一个字符串中 把指针移到插入位置 写入操作(此时指针在写入后的最后位置正好) 把字符串写入 * */@Testpublic void test3() {RandomAccessFile randomAccessFile = null;try {randomAccessFile = new RandomAccessFile(new File("HelloIO"), "rw");randomAccessFile.seek(3);String string = randomAccessFile.readLine();randomAccessFile.write("xy".getBytes());randomAccessFile.write(string.getBytes());} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (randomAccessFile != null) {try {randomAccessFile.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}// 在文件的某个位置进行覆盖的效果@Testpublic void test2() {RandomAccessFile randomAccessFile = null;try {randomAccessFile = new RandomAccessFile(new File("HelloIO"), "rw");randomAccessFile.seek(3);randomAccessFile.write("xy".getBytes());} catch (FileNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (randomAccessFile != null) {try {randomAccessFile.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}// 进行文件的读取和写入@Testpublic void test1() {// 进行文件的读取和写入RandomAccessFile r1 = null;RandomAccessFile r2 = null;try {// 读取的文件必须是存在的r1 = new RandomAccessFile(new File("hadi.txt"), "r");r2 = new RandomAccessFile(new File("file.txt"), "rw");byte[] bs = new byte[20];int len;while ((len = r1.read(bs)) != -1) {r2.write(bs, 0, len);}} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {if (r2 != null) {try {r2.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}if (r1 != null) {try {r1.close();} catch (IOException e) {e.printStackTrace();}}}}}
0 0
- IOの随机流
- IO流--随机访问(RandomAccessFile)
- IO流(RandomAccessFile随机访问流)
- IO流--RandomAccessFile--随机访问文件
- JAVA IO流RandomAccessFile随机读取
- IO —— 随机访问流
- IO之随机读写流RandomAccessFile
- 24-IO流-60-IO流(RandomAccessFile-读取&随机读取)
- 24-IO流-61-IO流(RandomAccessFile-随机写入&细节)
- 19、IO流-内存流、对象流、随机读写
- Java IO流->处理流->“随机访问” 的方式:RandomAccessFile
- io流操作之随机访问文件流代码
- IO流_随机访问流概述和写出数据
- Java IO流之随机读写流RandomAccessFile
- Java的IO流之文件随机读写
- [Java核心API]IO流--随机访问文件RandomAccessFile
- IO流_随机获取文本文件中的姓名案例
- Java IO详解——随机访问文件流
- 执行maven -v报错UnsupportedClassVersionError
- Android webview 使用HTTPS时有的图片不能加载
- Qt多窗口切换程序
- CentOS下LVS DR模式详细搭建过程
- scrapy开发三之开发过程中的那些经常性错误
- IOの随机流
- vector作为参数传递的几种情况
- MapReduce入门学习心得
- django静态文件服务器的配置
- 数数字(51nod 1770)
- ffmpeg 2.6.3在Windows系统MinGW的编译
- solr使用cursorMark做深度分页
- ibatis3中直接在xml中写明一对多的关系和利用ibatis的拦截器进行SQL重组达到分页的目的
- Hibernate应用开发步骤(学习笔记)