文字列を暗号化して、ByteArrayOutputStream
でバックアップされたCipherOutputStream
を使用してプリミティブなバイト配列に暗号化バイトを格納しようとしていますが、ByteArrayOutputStream
オブジェクトのサイズはゼロのままで、何かがCipherOutputStream
オブジェクトに書き込まれた後、ここにコードがあります。なぜCipherOutputStreamはByteArrayOutputStreamに書き込めませんか?
ByteArrayOutputStream out = new ByteArrayOutputStream();
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
cos.flush();
out.flush();
System.out.println(out.size());
pw.close();
だから私は以下のコードを使用してFileOutputStream
にByteArrayOutputStream
を変更することにより、比較を作ってみました。暗号化されたバイトがターゲットファイルに書き込まれることが判明しました。なぜ私はByteArrayOutputStream
をここで使うことができないのですか?解決策も提案できますか?閉じた後 -
FileOutputStream out = new FileOutputStream("/path/encrypted.txt");
CipherOutputStream cos = new CipherOutputStream(out, c);
PrintWriter pw = new PrintWriter(cos);
pw.println("Write something");
pw.close();
使用
が、それはまだ空です。もともと、私は 'PrintWriter'を使用しませんが、' CipherOutputStream'に直接書き込みます。これが私がとても不満を感じている理由です。 – gigadot
@gigadot:とにかく、内容を確認する前にストリームを閉じようとしましたか? – axtavt
はい、それは動作しますが、なぜですか?私は、フラッシュメソッドが存在する理由がないなら、フラッシングが同じことをしなければならないと考えましたか?とりあえずありがとう。 – gigadot