zoukankan      html  css  js  c++  java
  • File --文件的读写操作

    File --文件的读写操作
    -------------------

     1. 通过数组实现对一组数据的写入

     1 package day01;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 import java.io.RandomAccessFile;
     6 
     7 /**
     8  * 批量写入一组字节
     9  * @author Administrator
    10  *
    11  */
    12 public class RandomAccessFileDemo4 {
    13 
    14     public static void main(String[] args) throws IOException {
    15         
    16         RandomAccessFile raf=new RandomAccessFile("test.txt","rw");
    17         /**
    18          *String 的getBytes()方法:
    19          *将当前字符串按照当前系统默认的字符集转换为对应得而字节
    20          */
    21         String str="我爱学习,学习爱我";
    22         byte[] buf=str.getBytes("GBK");
    23         raf.write(buf);
    24         raf.close();
    25     }
    26 
    27 }



    2、 **通过数组对数据的读取**
            int read(byte[] buf)
             一次尝试从文件中读取buf数组length个字节
              并从该数组的第I一个位置其起存放实际读取到的字节
             返回值为实际读到的字节数

     1 package day01;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 import java.io.RandomAccessFile;
     6 
     7 /**
     8  * 读取一个字节数组的数据
     9  * @author Administrator
    10  *
    11  */
    12 public class RandomAccessFileDemo5 {
    13 
    14     public static void main(String[] args) throws IOException {
    15          RandomAccessFile raf =new RandomAccessFile("test.txt","r");
    16     /**
    17      * int read(byte[] buf)
    18      * 一次尝试从文件中读取buf数组length个字节
    19      * 并从该数组的第I一个位置其起存放实际读取到的字节
    20      * 返回值为实际读到的字节数
    21      */
    22     //创建字符数组
    23     byte[] buf =new byte[1000];
    24     //读取文件,并返回实际读写到的字节数
    25     int len=raf.read(buf);
    26     /**
    27      * 从字节数组转换为对应的字符串
    28      */
    29     //输出返回的字节数
    30     System.out.println(len);
    31     
    32     //转换为字符串
    33     String str=new String(buf);
    34     //输出读到的字符串,并去空格
    35     System.out.println(str.trim());
    36     raf.close();
    37     
    38     }
    39 
    40 }



    3、基于缓存形式复制文件


     1 package day01;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 import java.io.RandomAccessFile;
     6 
     7 /**
     8  * 基于缓存形式复制文件
     9  * @author Administrator
    10  *
    11  */
    12 public class RandomAccessFileDemo6 {
    13 
    14     public static void main(String[] args) throws IOException {
    15          RandomAccessFile src=new RandomAccessFile("src.iso","r");
    16         
    17          RandomAccessFile copy=new RandomAccessFile("copy.iso","rw");
    18          //计时开始
    19          long start=System.currentTimeMillis();
    20          //定义数组
    21          byte[] str=new byte[1024*10];
    22          /**
    23           * int read(byte[] buf)
    24           * 若返回值为-1,表示没有数据可读
    25           */
    26          int d=-1;
    27          while( (d=src.read(str))!=-1 ){
    28              //0:从0开始
    29              //d:写入d个元素   即:读取了几个元素,就写入几个元素
    30              copy.write(str,0,d);
    31          }
    32          src.close();
    33          copy.close();
    34          //计时结束
    35          long end=System.currentTimeMillis();
    36          System.out.println("拷贝完毕!");
    37          System.out.println("用时:"+(end-start)+"ms");
    38                 
    39     }
    40 
    41 }


    4、向文件中写入基本数据类型数据
    (>>> :无符号右移,忽略符号位,空位以0补)


     1 package day01;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 import java.io.RandomAccessFile;
     6 
     7 /**
     8  * 向文件中写入基本数据类型
     9  * @author Administrator
    10  *
    11  */
    12 public class RandomAccessFileDemo7 {
    13 
    14     public static void main(String[] args) throws IOException {
    15          RandomAccessFile raf=new RandomAccessFile(
    16                  "raf.dat","rw");
    17         
    18          int num=Integer.MAX_VALUE;
    19          //将int值写入文件
    20          /**
    21           *
    22           * 01111111 111111111 11111111 11111111
    23           *
    24           * >>> :无符号右移,忽略符号位,空位以0补
    25           */
    26          //原生写法
    27 //         raf.write(num>>>24);
    28 //         raf.write(num>>>16);
    29 //         raf.write(num);
    30         
    31          /**
    32               * public final void writeInt(int v) throws IOException {
    33               *write((v >>> 24) & 0xFF);
    34               *write((v >>> 16) & 0xFF);
    35               *write((v >>>  8) & 0xFF);
    36               *write((v >>>  0) & 0xFF);
    37                 //written += 4;
    38               *}
    39           */
    40         
    41          raf.writeInt(num);
    42          raf.writeDouble(1.4);
    43         
    44          raf.writeLong(12234);
    45          raf.close();
    46         
    47         
    48     }
    49 
    50 }

     
    5、对基本数据类型数据的读取

     

     1 package day01;
     2 
     3 import java.io.FileNotFoundException;
     4 import java.io.IOException;
     5 import java.io.RandomAccessFile;
     6 
     7 /**
     8  * 读写基本数据类型
     9  * @author Administrator
    10  *
    11  */
    12 public class RandomAccessFileDemo8 {
    13 
    14     public static void main(String[] args) throws IOException {
    15         
    16         RandomAccessFile raf=new RandomAccessFile(
    17                 "raf.dat","rw");
    18          int i=raf.readInt();
    19          double b=raf.redDouble();
    20          System.out.println(i);
    21     }
    22 
    23 }



  • 相关阅读:
    最近相对闲点,写个笔记2
    最近相对闲点,写个笔记
    ORACLE 调优
    静态工厂方法与构造函数 创建类 区别
    组合与继承 区别
    Java异常
    abstract class 和 interface 区别
    java中的io系统详解
    Tomcat Apache 区别
    Vmware 下的网络模式配置
  • 原文地址:https://www.cnblogs.com/dengchenrong/p/6593384.html
Copyright © 2011-2022 走看看