我正在开发一个加密工具,对于我们的加密文件格式,我使用 Base64 对数据进行编码。我正在使用 apache commons 编解码器使用围绕 FileInputStream 的 Base64InputStream 解码文件。这就像一个魅力,直到我在一个大的音乐文件上测试它。出于某种神秘的原因,当我这样做时,包括字节 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 字节。您可以猜到,这对我的应用程序产生了奇迹。有没有人知道发生了什么?