※ ChatGPTを利用し、要約された質問です(原文:固定長データの情報処理について)
固定長データの情報処理について
現在情報処理についての勉強中ですが
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.ByteBuffer;
public class dat_stream {
public static void main(String[] args) {
// 読み込むファイルの名前
String inputFileName = "ファイル名";
// 書き込むファイルの名前
String outputFileName = "ファイル名";
// ファイルオブジェクトの生成
File inputFile = new File(inputFileName);
File outputFile = new File(outputFileName);
try {
// 入力ストリームの生成
FileInputStream fis = new FileInputStream(inputFile);
BufferedInputStream bis = new BufferedInputStream(fis);
// 出力ストリームの生成
FileOutputStream fos = new FileOutputStream(outputFile);
BufferedOutputStream bos = new BufferedOutputStream(fos);
// 読み込み用バイト配列
byte[] buf = new byte[9];
// ファイルへの読み書き
int len = 0;
while ( ( len = bis.read(buf) ) != -1 ) {
bos.write(buf, 0, len);
}
// 後始末
bos.flush();
bos.close();
bis.close();
// エラーがあった場合は、スタックトレースを出力
} catch(Exception e) {
e.printStackTrace();
}
}
}
を使用してDATデータの入出力を考えています。
F0 F2 12 34 56 78 9C 00 50といった9byteの固定長データが
あったとします。
(1)1byteから2byteはそのまま入出力
F0 F2 →F0 F2
(2)3byte~7byteパック10進数からアンパック(ゾーン)10進数に変換
12 34 56 78 9C →F1 F2 F3 F4 F5 F6 F7 F8 F9
こちらに関しては上位桁・下位桁で計算し正の数・負の数等も
考えなければいけないと思うのですが・・・
(3)バイナリ進数からゾーン10進数に変換
00 50→F0 F0 F8 F0
計算方法)0*16進数3剰 + 0*16進数2剰 + 5*16進数1剰+ 0
このような(1)~(3)のようなバイナリ入出力を考えた場合
1レコードが9byteで
10レコードで90byteだった場合の
書き出し方法について情報処理について詳しい方いましたら
アドバイスください。
なお数値変換については今後勉強していければと思っております。
どうぞよろしくお願い致します。
お礼
返信遅くなりました。 アドバイスどうもありがとうございます。 あらかじめ、領域を作ったほうが、後々作業しやすいのですね。 とりあえず領域を9byteから15byteにすることが出来ました。 byte型でのwriteメソッドの扱いがよくわからないのですが 色々とやってみます。 どうもありがとうございました。