JavaのRandomAccessFileの例

JavaのRandomAccessFileは、ファイルへのデータの読み書きを提供します。RandomAccessFileは、ファイルシステムに保存されているバイトの大きな配列としてのファイルと、ファイルポインターの位置を移動させるために使用するカーソルとの関係を持ちます。

JavaのRandomAccessFile

Java RandomAccessFile, RandomAccessFile in java, Java RandomAccessFile read write append example

JavaのRandomAccessFileの読み込みの例を示します。

JavaでRandomAccessFileを使用してファイルからバイト配列を読み取ることができます。以下はRandomAccessFileを使用してファイルを読み取る疑似コードです。

RandomAccessFile raf = new RandomAccessFile("file.txt", "r");
raf.seek(1);
byte[] bytes = new byte[5];
raf.read(bytes);
raf.close();
System.out.println(new String(bytes));

最初の行では、読み取り専用モードでファイルのRandomAccessFileインスタンスを作成しています。次の行では、ファイルポインタをインデックス1に移動しています。長さ5のバイト配列を作成しているため、read(bytes)メソッドを呼び出すと、ファイルから5バイトがバイト配列に読み込まれます。最後に、RandomAccessFileリソースを閉じて、バイト配列をコンソールに表示しています。

以下は、JavaのRandomAccessFileを使用した書き込みの例です。

以下は、JavaでRandomAccessFileを使用してファイルにデータを書き込む方法を示す簡単な例です。

RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(5);
raf.write("Data".getBytes());
raf.close();

RandomAccessFileはファイルをバイト配列として扱うため、書き込み操作はデータを上書きするだけでなく、ファイルに追記することも可能です。そのすべては、ファイルポインタの位置に依存します。もしポインタがファイルの長さを超えて移動され、その後に書き込み操作が呼ばれた場合、ファイルには不正データが書き込まれます。そのため、書き込み操作を使用する際にはこれに注意する必要があります。

ランダムアクセスファイルの追記例

ファイルに追記するために必要なのは、ファイルポインターがファイルの末尾にあることを確認することです。以下は、RandomAccessFileを使用してファイルに追記するためのコードです。

RandomAccessFile raf = new RandomAccessFile("file.txt", "rw");
raf.seek(raf.length());
raf.write("Data".getBytes());
raf.close();

JavaのRandomAccessFileの例を示します。

or

JavaのRandomAccessFileの使用例です。

以下の完全なJava RandomAccessFileの例は、異なる読み書き操作で構成されています。

package com.scdev.files;

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

public class RandomAccessFileExample {

	public static void main(String[] args) {
		try {
			// file content is "ABCDEFGH"
			String filePath = "/Users/scdev/Downloads/source.txt"; 
			
			System.out.println(new String(readCharsFromFile(filePath, 1, 5)));

			writeData(filePath, "Data", 5);
			//now file content is "ABCDEData"
			
			appendData(filePath, "scdev");
			//now file content is "ABCDEDatascdev"
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private static void appendData(String filePath, String data) throws IOException {
		RandomAccessFile raFile = new RandomAccessFile(filePath, "rw");
		raFile.seek(raFile.length());
		System.out.println("current pointer = "+raFile.getFilePointer());
		raFile.write(data.getBytes());
		raFile.close();
		
	}

	private static void writeData(String filePath, String data, int seek) throws IOException {
		RandomAccessFile file = new RandomAccessFile(filePath, "rw");
		file.seek(seek);
		file.write(data.getBytes());
		file.close();
	}

	private static byte[] readCharsFromFile(String filePath, int seek, int chars) throws IOException {
		RandomAccessFile file = new RandomAccessFile(filePath, "r");
		file.seek(seek);
		byte[] bytes = new byte[chars];
		file.read(bytes);
		file.close();
		return bytes;
	}

}

それがRandomAccessFileに関する全てです。

コメントを残す 0

Your email address will not be published. Required fields are marked *