7-RandomAccessFile 随机流

  1 package com.io;
  2
  3 import java.io.File;
  4 import java.io.FileNotFoundException;
  5 import java.io.IOException;
  6 import java.io.RandomAccessFile;
  7
  8 import org.junit.Test;
  9
 10 /*
 11  *  RandomAccessFile:支持随机访问
 12  *    1、即可充当一个输入流,又可充当一个输出流
 13  *    2、支持从任意位置读写
 14  */
 15 public class RandomAccessFileTest {
 16
 17
 18
 19     @Test
 20     public void testRandomAccessFile(){
 21         /*
 22          * 创建RandomAccessFile对象有两个参数,
 23          * 一个是file对象,一个是此RandomAccessFile对象对文件读写的权限,有以下四种
 24          *
 25          * r: 以只读方式打开
 26          * rw:打开以便读取和写入
 27          * rwd:打开以便读取和写入;同步文件内容的更新
 28          * rws:打开以便读取和写入;同步文件内容和元数据的更新
 29
 30          */
 31         RandomAccessFile raf_read = null;
 32         RandomAccessFile raf_write = null;
 33         try {
 34             raf_read = new RandomAccessFile(new File("random.txt"), "r");
 35             raf_write = new RandomAccessFile(new File("random_new.txt"), "rw");
 36
 37             byte[] b = new byte[20];
 38             int len;
 39             while((len = raf_read.read(b)) != -1){
 40                 raf_write.write(b, 0, len);
 41             };
 42         } catch (FileNotFoundException e) {
 43             // TODO Auto-generated catch block
 44             e.printStackTrace();
 45         } catch (IOException e) {
 46             // TODO Auto-generated catch block
 47             e.printStackTrace();
 48         }finally{
 49             try {
 50                 raf_write.close();
 51             } catch (IOException e) {
 52                 e.printStackTrace();
 53             }
 54
 55             try {
 56                 raf_read.close();
 57             } catch (IOException e) {
 58                 e.printStackTrace();
 59             }
 60         }
 61     }
 62
 63
 64     @Test
 65     public void 覆盖(){
 66         RandomAccessFile raf = null;
 67         try {
 68             raf = new RandomAccessFile(new File("random.txt"), "rw");
 69             raf.seek(3);//把指针移到第3个字节
 70             raf.write("xy".getBytes());
 71         }  catch (IOException e) {
 72             e.printStackTrace();
 73         }finally{
 74         try {
 75             raf.close();
 76         } catch (IOException e) {
 77             // TODO Auto-generated catch block
 78             e.printStackTrace();
 79         }
 80         }
 81     }
 82
 83     //单行插入字符
 84     @Test
 85     public void 插入字符串(){
 86         RandomAccessFile raf = null;
 87         try {
 88             raf = new RandomAccessFile(new File("random.txt"), "rw");
 89             raf.seek(3);//把指针移到第3个字节
 90             String str = raf.readLine();
 91             System.out.println(raf.getFilePointer());//指针位置
 92             raf.seek(3);
 93             raf.write("xy".getBytes());
 94             raf.write(str.getBytes());
 95         }  catch (IOException e) {
 96             e.printStackTrace();
 97         }finally{
 98         try {
 99             raf.close();
100         } catch (IOException e) {
101             // TODO Auto-generated catch block
102             e.printStackTrace();
103         }
104         }
105     }
106
107
108
109     //多行插入字符
110         @Test
111         public void 多行插入字符串(){
112             RandomAccessFile raf = null;
113             try {
114                 raf = new RandomAccessFile(new File("random_lines.txt"), "rw");
115                 raf.seek(3);//把指针移到第3个字节
116                  byte [] b = new byte[20];
117                  int len;
118                  StringBuffer sbr = new StringBuffer();
119                  while((len = raf.read(b)) != -1){
120                      sbr.append(new String(b,0,len));
121                  }
122                  System.out.println(raf.getFilePointer());
123                  raf.seek(3);
124                  raf.write("xy".getBytes());
125             }  catch (IOException e) {
126                 e.printStackTrace();
127             }finally{
128             try {
129                 raf.close();
130             } catch (IOException e) {
131                 e.printStackTrace();
132             }
133             }
134         }
135 }
时间: 2024-10-18 04:07:15

7-RandomAccessFile 随机流的相关文章

20165306 第五周学习任务

第五周学习任务 教材学习内容总结 7.1内部类 外嵌类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外嵌类中的方法. 内部类的类体中不可以声明类变量和类方法.外嵌类的类体中可以用内部类声明对象,作为外嵌类的成员. 内部类仅供它的外嵌类使用,其他类不可以用某个类的内部类声明对象. 例子1 7.2匿名类 匿名类就是一个子类,由于无名可用,所以不可能用匿名类声明对象,却可以直接用匿名类创建一个对象. 例子2 如果某个方法的参数是接口类型,那么可以使用接口名和类体组合创建一个匿名对象传递给方法的

FAQ Java IO

### BIO.NIO.AIO有什么区别 ### java.io中流分为几种按传输方向分为输入流(InputStream),输出流(OutputStream).按内容分为字节流(*Stream),字符流(*Reader.*Writer).按功能分为节点流(OutputStream),处理流(OutputStreamWriter). ### 三个socket,需要多少个线程来处理使用 java.nio.Selector 可实现单线程处理多个socket. ### Java 中怎么创建 ByteBu

Java_io体系之RandomAccessFile简介、走进源码及示例——20

Java_io体系之RandomAccessFile简介.走进源码及示例——20 RandomAccessFile 1.       类功能简介: 文件随机访问流.关心几个特点: 1.他实现的接口不再是InputStream.OutputStream中的任何一个.而是实现的DataInput.DataOutput.这也注定了他可以对java基础类型进行操作.而且是即可读取.也可以写入.关于这部分的方法大多数都是从DataInputStream.DataOutputStream那里荡来的. 2.如

RandomAccessFile拆分合并文件

import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.RandomAccessFile; import java.io.SequenceInputStream; import java.util.Vector; public class RandonFileAccessTest { public static void main(String[]

[Java开发之路](7)RandomAccessFile类详解

RandomAccessFile适用于大小已知的记录组成的文件,提供的对文件访问,既可以读文件,也可以写文件,并且支持随机访问文件,可以访问文件的任意位置.文件中记录的大小不一定都相同,只要我们知道记录的大小和位置.但是该类仅限于操作文件. RandomAccessFile不属于InputStream和OutputStream继承层次结构中的一部分.除了实现DataInput和DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和

深入理解JAVA I/O系列四:RandomAccessFile

一.简述 这个是JDK上的截图,我们可以看到它的父类是Object,没有继承字节流.字符流家族中任何一个类.并且它实现了DataInput.DataOutput这两个接口,也就意味着这个类既可以读也可以写. 二.存在的意义 1.是JAVA I/O流体系中功能最丰富的文件内容访问类,它提供了众多方法来访问文件内容. 2.由于可以自由访问文件的任意位置,所以如果需要访问文件的部分内容,RandomAccessFile将是更好的选择. 3.可以用来访问保存数据记录的文件,文件的记录的大小不必相同,但是

随机访问流 RandomAccessFile

RandomAccessFile不属于流,是Object的子类 但是它融合了InputStream和OutputStream的功能,支持对文件随机读取和写入 构造方法 public RandomAccessFile(String name,String mode):第一个参数是文件路径,第二个参数是操作文件的模式 模式有4种,但是最常用的"rw",这种方法表示既可以写数据,也可以输出数据 package cn.idcast; import java.io.IOException; im

RandomAccessFile 文件读写中文乱码解决方案!

RandomAccessFile 读写文件时,不管文件中保存的数据编码格式是什么   使用 RandomAccessFile对象方法的 readLine() 都会将编码格式转换成 ISO-8859-1 所以 输出显示是还要在进行一次转码 例子: package fileReadAndWrite; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; /*

Java篇:RandomAccessFile

1 package ares.io; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.RandomAccessFile; 6 import java.util.Arrays; 7 8 //Java文件模型操作 9 public class RafSample { 10 11 public static void main(String[] args) throws IOException { 12 /

File操作-RandomAccessFile

一.知识点笔记 1. 文件操作——RandomAccessFile 1. 创建对象 Java提供了一个可以对文件随机访问的操作,访问包括读和写操作.该类名为RandomAccessFile.该类的读写是基于指针的操作. 1.1.2. 只读模式 RandomAccessFile在对文件进行随机访问操作时有两个模式,分别为只读模式(只读取文件数据),和读写模式(对文件数据进行读写). 只读模式: 在创建RandomAccessFile时,其提供的构造方法要求我们传入访问模式: RandomAcces