私は暗号化ツールを開発しており、暗号化されたファイル形式では Base64 を使用してデータをエンコードしています。FileInputStream にラップされた Base64InputStream を使用してファイルをデコードするために、apache commons コーデックを使用しています。大きな音楽ファイルでテストするまで、これは魅力的に機能しました。不思議な理由で、これを行ったとき、バイト 6028 以降のすべてのバイトが 0 になりました。それを byte[] に読み込むコードは次のとおりです。
FileInputStream filein = new FileInputStream(filename);
Base64InputStream in = new Base64InputStream(filein,false,76,'\n');
byte[] contents = new byte[known_and_tested_correct_filelength];
in.read(contents);
なんらかの理由で、バイト 6028 以降はすべてcontents
0 です。ただし、contents.length
約 300,000 バイトです。ご想像のとおり、これは私のアプリケーションにとって驚異的でした。誰かが何が起こっているのかについて少しでも知っていますか?