zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    [算法][求积分][复合辛普森公式]
    [51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]
    [51单片机] SPI nRF24L01 无线简单程序 1
    [stm32] 利用uC-BmpCvt软件生成uc-gui可调用的bmp图片
    [stm32] 利用uc-gui封装画图和画线函数移植51上的模拟动画
    [stm32] 中断
    [C++] 将 mp3 等音乐资源以资源形式嵌入 exe 文件中
    [游戏学习28] MFC 时钟
    [游戏学习27] MFC 匀速运动
    [游戏学习26] MFC 时间函数 画图形
  • 原文地址:https://www.cnblogs.com/fubaizhaizhuren/p/5026150.html
Copyright © 2011-2022 走看看