PDF仕様で作業を始めました。PDFファイルは、テキストデータとバイナリデータが混在しています。すばやく汚い編集を行うために、ファイルを文字列に読み込み、テキスト部分を見つけて置き換えてから、置き換えたバイトを除くすべてのバイトを保持しながら、文字列をファイルに書き戻したいと思います。
私の最初の素朴な試みは次のようになりました:
byte[] orignalBytes = ...; // read bytes from file
String content = new String(originalBytes, StandardCharsets.US_ASCII);
// do some find and replace (only working with ASCII chars)
byte[] changedBytes = content.getBytes(StandardCharsets.US_ASCII);
Stringコンストラクタのjavadocから引用すると、これは失敗します。「このメソッドは、常に不正な形式の入力およびマップ不可能な文字シーケンスをこの文字セットのデフォルトの置換文字列に置き換えます」。
US_ASCII文字セットのすべての文字をマップし、さらに「byte[]からStringに変換して戻すときに他のすべてのバイトの値を保持する」特別な文字セットを探しています。
私はASCII文字で作業できる必要があるだけです。
今、自分で文字セットを書くことを考えていますが、そのようなものがすでに存在するのではないかと思っていました。
アイデアや指針はありますか?