IOストリーム-IOにおけるランダムアクセスストリームとファイルクラスの役割(9)

IOストリーム-IOにおけるランダムアクセスストリームとファイルクラスの役割(9)

  1. RandomAccessFileは、次の2つの機能を実行できます。

    • ファイルへの読み取りおよび書き込み操作を実行します。
    • 順番にしか読み取れない他のストリームとは異なり、ファイルの任意の場所にアクセスできます。

    一部のクライアントソフトウェアを開発する場合、ソフトウェアの使用回数や使用日など、「ファイルの内容を任意に操作する」ことができるこの強力なクラスがよく使用されます。このクラスは、このタイプのアクセスを通じてアクセスできます。比較および変更ファイルに保存される回数と日付。Javaがクライアントソフトウェアを開発することはめったにないため、このクラスがJava開発で使用されることは比較的まれです。

  2. 3つのコアメソッド:

ここに画像の説明を挿入します

  1. 特定のコードの実装:

    import java.io.RandomAccessFile;
    
    public class RandomAccessFileDemo {
          
          
        public static void main(String[] args) {
          
          
            RandomAccessFile raf=null;
            try {
          
          
                raf=new RandomAccessFile("d:/sxt7.txt","rw");//rw确定可读写的访问权限
                //将若干的数据写入到文件中
                int[] arr=new int[]{
          
          10,20,30,40,50,60,70,80,90,100};
                for (int i=0;i<arr.length;i++){
          
          
                    raf.writeInt(arr[i]);
                }
                raf.seek(4);//比如:10:0 1 2 3 (4个字节) 20:4 5 6 7 (4个字节),而seek(4),就是指针从第4个字节开始读取,从第四个字节开始返回多少个
                System.out.println(raf.readInt());//readInt()是读取4个字节,也就是从刚才的第四个字节开始,读取四个字节,也就是输出20
    
                //隔一个读一个数据
                for (int i=0;i<10;i+=2){
          
          
                    raf.seek(i*4);//隔四个字节读四个字节
                    System.out.print(raf.readInt()+"\t");
                }
                System.out.println();
    
                //在第8个字节位置插入一个新的数据45,替换之前的数据30
                raf.seek(8);
                raf.writeInt(45);//从第八个字节开始替换,替换四个字节,替换的数值为45
                for (int i=0;i<10;i+=2){
          
          
                    raf.seek(i*4);//隔四个字节读四个字节
                    System.out.print(raf.readInt()+"\t");
                }
            }catch (Exception e){
          
          
                e.printStackTrace();
            }finally {
          
          
                try {
          
          
                    if (raf!=null){
          
          
                        raf.close();
                    }
                }catch (Exception e){
          
          
                    e.printStackTrace();
                }
            }
        }
    }
    
  2. IOにおけるFileクラスの役割

    ファイルをデータソースまたはターゲットとして使用する場合、文字列を使用してファイルと場所を指定するだけでなく、Fileクラスを使用して指定することもできます。

    import java.io.*;
    
    public class FileInIODemo {
          
          
        public static void main(String[] args) {
          
          
            BufferedReader br=null;
            BufferedWriter bw=null;
            try {
          
          
                //我们之前都是用"路径"字符串放在了FileReader当中,去指定位置,现在我们通过File对象来表达了
                br=new BufferedReader(new FileReader(new File("d:/sxt.txt")));
                bw=new BufferedWriter(new FileWriter(new File("d:/sxt8.txt")));
                String temp="";
                int i=1;
                while ((temp=br.readLine())!=null){
          
          
                    bw.write(i+","+temp);
                    bw.newLine();
                    i++;
                }
            }catch (Exception e){
          
          
                e.printStackTrace();
            }finally {
          
          
                try {
          
          
                    if (br!=null){
          
          
                        br.close();
                    }
                    if (bw!=null){
          
          
                        bw.close();
                    }
                }catch (Exception e){
          
          
                    e.printStackTrace();
                }
            }
        }
    }
    

おすすめ

転載: blog.csdn.net/Xun_independent/article/details/114897599