• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaのRandomAccessFileについて教えてください。)

JavaのRandomAccessFileについて教えてください

このQ&Aのポイント
  • Javaの構造体の代わりにRandomAccessFileを使用してバイナリファイル内の任意の位置に読み書きできます
  • 各フィールドをByte配列に配置する必要があるため、面倒ですが、他の言語のようなフィールドの塊を一気に読み書きする方法はありません
  • RandomAccessFileを使用することで、任意の位置にデータを書き込んだり読み出したりすることができます

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おそらくそのような方法はないと思います。 Javaのオブジェクトが実際にどのような配置になっているかは処理系依存で、 たとえばフィールドが定義した順番に並んでいるとも限らないですし、 C言語のようにアドレスが丸出しになっていないということもあります。 C言語でも構造体をfwriteで書き出してしまうと移植性が犠牲になりますから、 構造体のメンバをひとつひとつ出力するほうが望ましいとは言われます。 ましてや安全性にとくに気を使っているJavaにそのような機能がないのは致しかたないように思います。 もしオブジェクトを手軽に丸ごと保存したいようならシリアライズが使われます。 「フィールドの塊を一気にランダムファイルに簡単に読み書きする」というのを見る限り、もしかしたらお求めのものはシリアライズなのかもしれません。 そうではなく、どうしてもバイナリファイルの読み書きが面倒であれば、 リフレクションでフィールドを動的に調べて自動的に読み書きすることはできなくもないでしょう。 とはいえ、RandomAccessFileで読み書きするのはごく妥当な方法だと思います。

maigo
質問者

お礼

 早速の回答ありがとうございます。  確かにそうですね。  Javaでは一般的にその様な方法が無いと言う事が判って、 すっきりしました。  あまりアクロバティックなことは避けたいので、単純な配列で 扱える様なデータの構造になるように仕様を検討しなおしてみます。  どうもありがとうございました。  まずは、お礼まで。