teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

バイナリファイル出力

2019/12/25 14:40

投稿

xebme
xebme

スコア1109

answer CHANGED
@@ -13,4 +13,15 @@
13
13
  result[i] = (i<l) ? sjis[i] : (byte) 0x20;
14
14
  }
15
15
  ```
16
- sjisが20バイトを超える場合は使えません。
16
+ sjisが20バイトを超える場合は使えません。全角文字を全く扱わない場合は切り捨て問題は起こりません。
17
+
18
+ **バイト配列をファイル出力(追記)**
19
+
20
+ もしかして、バイナリファイルの出力方法がわからないということでしょうか。byte[]をそのままファイル出力するには、`java.io.FileOutputStream`を使います。
21
+ ```Java
22
+ try (FileOutputStream fs = new FileOutputStream(" ... ")) {
23
+ fs.write(sjis);
24
+ } catch (IOException e) { ... }
25
+ ```
26
+ `java.io.OutputStreamWriter`で出力するとunicode -> ネイティブエンコーディング変換が行われます。
27
+ Reader/Writerはエンコーディングを変換します。InputStream/OutputStreamはバイナリをそのまま扱い変換しません。