RandomAccessFile
- RandomAccessFileはObjectクラスを直接継承し、DataInputおよびDataOutputインターフェイスを実装します
- 入力ストリームと出力ストリームの両方として使用できます
package com.ntt.sts;
import org.junit.Test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;
public class RandomAccessFileTest {
@Test
public void randomAccessFileTest() throws IOException {
RandomAccessFile randomAccessFile = new RandomAccessFile(new File("test1.png"),"r");
RandomAccessFile randomAccessFile1 = new RandomAccessFile(new File("三刀流索隆.jpg"),"rw");
byte[] bytes = new byte[1024];
int len;
while((len = randomAccessFile.read(bytes)) != -1){
randomAccessFile1.write(bytes,0,len);
}
randomAccessFile.close();;
randomAccessFile1.close();
}
}
- 特徴
- パスを指定するときに、ファイルが存在しない場合は自動的に作成されます
- ファイルにデータを繰り返し追加すると、データを追加する代わりに、元のデータが上書きされます(前から後ろに上書きされます)。
- seek()メソッドを提供します。このメソッドは、ポインターを呼び出してファイル挿入操作を実装します。他のストリームは、append()メソッドを使用してファイルの末尾に追加するか、ファイルを直接上書きします。
- アプリケーションシナリオ、Resumable
Thunderboltのダウンロード機能、ダウンロード前に2つの一時ファイルが作成されます。1つはダウンロードされたファイルと同じサイズの空のファイルで、もう1つはファイルポインタの場所を記録するファイルです。毎回一時停止し、前回のポインタを保存し、ブレークポイントでダウンロードすると前回の場所からダウンロードを継続し、ブレークポイントでダウンロードまたはアップロードする機能を実現します。