Java RandomAccessFile指定された場所でファイルの読み取りと書き込みを実現

2476 ワード

Java RandomAccessFile指定された場所でファイルの読み取りと書き込みを実現
RandomAccessFileはランダム読み出しクラスに属し、ファイル自体の内容を直接ランダムに操作できるものであり、ファイルの指定された場所でのコンテンツの読み取りや書き込みが可能であることは多くの場合便利である.
RandomAccessFileは、データ記録を保存するファイルにアクセスするために使用され、seek()メソッドで記録にアクセスし、読み書きすることができます.これらの記録の大きさは同じである必要はありません.しかし、その大きさと位置は知られていなければならない.ただし、このクラスは操作ファイルに限られます.
RandomAccessFileはInputStreamとOutputStreamクラスに属しません.実際には、DataInputとDataOutputインタフェースの実装に加えて(DataInputStreamとDataOutputStreamもこの2つのインタフェースを実装している)、この2つのクラスとは無関係であり、InputStreamとOutputStreamクラスにすでに存在する任意の機能さえ使用しない.完全に独立したクラスであり、すべての方法(ほとんどはそれ自身に属している)はゼロから書かれています.これは、RandomAccessFileがファイル内を前後に移動できるため、他のI/Oクラスとは根本的に動作が異なる可能性があります.要するに、Objectを直接継承する独立したクラスです.
基本的に、RandomAccessFileの働き方は、DataInputStreamとDataOutputStreamを組み合わせて、位置決め用のgetFilePointer()や、ファイル内で移動するためのseek()や、ファイルサイズを判断するlength()やskipBytes()が何バイトをスキップするかなど、独自の方法を加えることです.また、そのコンストラクション関数は、読み取り専用(「r」)か、読み取り専用(「rw」)かでファイルを開くパラメータ(Cのfopen()とそっくり)を表す.ファイルのみの書き込みはサポートされていません.
RandomAccessFileのみseek検索メソッドがあり、このメソッドはファイルにのみ適用されます.BufferedInputStreamにはmark()メソッドがあり、タグを設定し(結果を内部変数に保存)、reset()を呼び出してこの位置に戻ることができますが、その機能は弱すぎて、あまり実用的ではありません.
インスタンスコード:

import java.io.IOException;
import java.io.RandomAccessFile;

/**
 * RandomAccessFile        ,                    ,         
 *         
 * @author andy
 *
 */
public class RandomAccessFileTest {

 public static void main(String args[]) throws IOException {
 write();
 read();
 }
 
 public static void write() throws IOException {
 //            
 RandomAccessFile raf = new RandomAccessFile("D:\\test.txt", "rw");
 raf.writeBytes("Hello World!");
 raf.writeBoolean(true);
 raf.writeInt(30);
 raf.writeDouble(3.56);
 raf.close();
 }
 
 public static void read() throws IOException {
 RandomAccessFile raf = new RandomAccessFile("D:\\test.txt", "r");
 raf.seek(12);//       
 boolean booleanValue = raf.readBoolean();
 int intValue = raf.readInt();
 double doubleValue = raf.readDouble();
 raf.seek(0);//               
 byte[] bytes = new byte[12];
 for (int i=0; i 
 

読書に感謝して、みんなを助けることができることを望んで、みんなの当駅に対する支持に感謝します!