ファイルをバイト配列に変換する方法と、stringとbackに変換する方法があります。ファイルをバイト配列に変換するより効果的な方法
InputStream is = new FileInputStream(new File("c:/original.png"));
String temp = Hex.encodeHexString(IOUtils.toByteArray(is));
System.out.println(temp);
byte[] b = Hex.decodeHex(temp .toCharArray());
OutputStream out = new FileOutputStream(new File("c:/copy.png"));
IOUtils.write(b, out);
正常です。問題は、temp
文字列のサイズです。 c:/original.png
ファイルがtemp
より1523KB
の場合、サイズは3046KB
です。ファイルのサイズを倍にしない文字列にファイルを変換するより効果的な方法はありますか? (私はそれが約2倍のサイズである理由を理解しています)
また、temp
文字列を圧縮するにはどうすればいいですか?
これまでのところ、文字列の理由です。これは、文字列だけをとるキャッシュに格納されています。ファイルは実際にWebサーバーにアップロードされます。アップロードをダウンロードしようとすると、データベースからではなくキャッシュから取得されます。そして、キャッシュは、私が誰かが検索するたびにデータベースを呼びたくないという予測によって検索パフォーマンスを向上させるためにあります。
*なぜ*文字列にバイナリデータを格納する必要があるのか分かりますか? – NPE
なぜそれを文字列として使用したいですか?画面に表示するだけですか? –
16進数でエンコードされた文字列も必要ですか?そうでない場合は、そのステップをスキップしてバイト配列を直接使用します。 – millimoose