0

ファイル記述子をレコードの先頭に移動したい。Recordという名前のクラスがあります。たとえば、パラメーターに従って、4 としましょう。4. レコードの先頭にアクセスしたいとします。このように、seek メソッドを使用することになると思います。しかし、私はレコードのサイズが必要です。C言語では、次のように言うことができます

f seek(3*(size of(Record)))

しかし、Java では、自分のレコード サイズを知る方法を見つけることができませんでした。どうすればこれを行うことができますか?

4

3 に答える 3

1

オブジェクトを ByteArrayOutputStream にシリアル化してから、ストリームの toByteArray() メソッドを呼び出してバイト配列自体を取得できます。次に、配列で length を呼び出すことでバイト単位のサイズを簡単に取得できます。
バイト配列は、ファイルに書きたいものです。http://www.coyotegulch.com/products/itzam/java/index.html
を見ると、基本的な実装がファイル内の任意のオブジェクトのリンクされたリストであるデータベースを見つけることができます。次に、作成者は、キー付きアクセスのために、その上にインデックス スキームを使用します。 私はこれを以前に使用したことがありますが、うまくいきます - 自分で書くよりも良いかもしれません。

于 2011-06-05T01:59:50.713 に答える
0

最初にレコードをスキップ リストデータ構造に配置し、スキップ リストをファイル オフセットとしてディスクに書き込みます。データを 1 回パスして、シリアル化された長さを事前に見つけることができます。

于 2011-06-04T17:25:26.540 に答える
0

データを書き込むために何を使用しましたか?ObjectOutputStream を使用している場合、レコードの大きさを知る方法はなく、ObjectOutputStream によって書き込まれたファイルでオブジェクトをランダムにシークしてロードすることもできません。

于 2011-06-04T16:22:39.710 に答える