2

私はグーグル翻訳を使用しています。質問がよく理解されていることを願っています。

ランダム アクセス ファイルについて理解できないことが 1 つあります。プログラムのしくみは理解できませんが、機能します。

これは私のプログラムです:

// ---------------------------------------------
RandomAccessFile RandomAccessFile = new RandomAccessFile ( " pathfile ", " r");

byte [] document = new byte [ ( int) randomAccessFile.length ()] ;

randomAccessFile.read (document) ;
// ---------------------------------------------

1 行目で read でファイルにアクセスします 2 行目でファイルと同じサイズのバイト配列オブジェクトを作成します 3 行目でバイト配列を読み取ります

しかし、バイト配列のファイルがダンプされることはありません。

プログラムは次のようになるはずです:

/ / ---------------------------------------------
RandomAccessFile RandomAccessFile = new RandomAccessFile ( " pathfile ", " r");

byte [] document = new byte [ ( int) randomAccessFile.length ()] ;

// Line changed
document = randomAccessFile.read();
// ---------------------------------------------

Javaのドキュメントには次のように書かれています:

randomAccessFile.read() ;

Reads a byte of data from this file . The byte is returned as an integer in
the range 0 to 255 ( 0x00- 0x0ff ) .

バイト数ではなくバイト数のみを返します。

このステートメントで、この行が byte [] 変数ドキュメントのバイトをどのようにダンプするかを誰かが説明してくれませんか?

randomAccessFile.read (document) ;

ありがとう!!

// ------------------------------------------------ ------------------------------

もう一つの例:

このメソッドを BufferedReader と比較します。

File file = new File ("C: \ \ file.txt"); 
FileReader fr = new FileReader (file); 
BufferedReader br = new BufferedReader (fr); 
... 
String line = br.readLine (); 

BufferedReader は行を読み取り、それを文字列に渡します。

ファイルの内容を変数に渡すこの Java ステートメントで確認できます。

String line = br.readLine ();

しかし、この他のステートメントではそれがわかりません。

RandomAccessFile.read ();

読んだだけで、コンテンツはその行をどこにも渡しません...

4

2 に答える 2

1
randomAccessFile.read (document) ;

このメソッドは no を読み取ります。ファイルからのバイト数、つまりドキュメント配列の長さ ドキュメント配列の長さが 1024 バイトの場合、ファイルから 1024 バイトを読み取り、配列に配置します。

この方法のドキュメントについては、ここをクリックしてください

document = randomAccessFile.read () ;

ファイルから1バイトを読み取って返すだけで、ファイル全体を読み取るわけではありません。

このメソッドのドキュメントについては、ここをクリックしてください

于 2014-03-13T10:48:43.257 に答える