- ベストアンサー
javaバイナリ変換したデータのファイル出力
現在、 String test_st = "0123456789abcdef"; というデータを byte[] bytes = test_st.getBytes("UTF-8"); このコードでバイナリ変換したのですが、このbytesに格納したバイナリデータたバイナリファイルとして出力したいのですが、どのようにしたらよいかご教授よろしくお願い致します。 BinaryFileWriter writer = new BinaryFileWriter(); このようなコードで出力できるとのサンプルもあったのですが、うまくいきません。 どうぞ、よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ん? byte[]をファイルに出力するんなら↓のようになるんジャマイカ。 public static void main(String[] args) throws Exception { String test_st = "0123456789abcdef"; byte[] bytes = test_st.getBytes("UTF-8"); FileOutputStream fos = new FileOutputStream("C:\\Users\\hogefuga\\okwave.txt"); fos.write(bytes); fos.close(); } 「いやいやいや、それじゃ結局0123456789abcdefっていう中身のテキストファイルになるでしょ」って言うんならそもそもtest_st.getBytes("UTF-8")がおかしい。01,23,45,67,89,ab,cd,efっていうバイト列のバイナリファイルを保存したいなら、byte[] bytesが{ 0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef }じゃないといけないわけよ。つまり、この問題はOutputStream云々じゃなくて、保存したいバイナリデータ(=byteの配列)をどう作るかってだけの話。 ちなみにtest_st.getBytes("UTF-8")が返す結果は以下のようになる。 { 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 } 16進テキスト(String)を16進バイト列(byte[])にする方法はネット上にいくらでも転がっているので探してみてください。
お礼
回答いただきありがとうございます。ファイル出力のできました。助かります。また、テキストデータとバイナリの数値データの混在ファイルの作り方もStringデータの"0123"だと"0x30,0x31,0x32,0x33"とかになっちゃいますね。 自分としては0x30のデータだったら0x00 0x31なら0x01 とかのswitch文で分岐させて数値データに変えてやるような感じにしようかなとか思ってます。