【问题标题】:Decoding a Base64 file with org.apache.commons.codec.binary.Base64InputStream [closed]使用 org.apache.commons.codec.binary.Base64InputStream 解码 Base64 文件 [关闭]
【发布时间】:2014-12-11 09:52:51
【问题描述】:

你好 Stackoverflowers,

org.apache.commons.codec.binary.Base64InputStream 有一个奇怪的问题:它给了我完全相同的原始 Base64 编码字节流。

使用的代码是:

  InputStream is = new BufferedInputStream(
                        new FileInputStream(
                           new File("/tmp/inputFile")));
  try
  {
    File decodedFile = new File("/tmp/file.dec");
    OutputStream os = new BufferedOutputStream(new FileOutputStream(decodedFile));
    try
    {
      Base64InputStream b64is = new Base64InputStream(is); 
      try
      {
        byte[] buff = new byte[2048];
        int count;
        while ((count = is.read(buff)) > 0)
        {
          os.write(buff, 0, count);
        }
      } finally
      {
        b64is.close();
      }
    } finally
    {
      os.close();
    }
  }
  finally
  {
    is.close();
  }

如果inputFile包含一个Base64编码的字符串(例如0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAOwADAP7/C,执行此代码后,/tmp/file.dec包含完全相同的字符串...

有人知道为什么它没有被解码吗?

【问题讨论】:

    标签: java stream base64 apache-commons


    【解决方案1】:

    您正在阅读错误的信息流。这个

    while ((count = is.read(buff)) > 0)
    

    应该是

    while ((count = b64is.read(buff)) > 0)
    

    【讨论】:

    • 妈的!!!是真的!!!非常感谢!!!我想我需要睡一会儿;-)
    猜你喜欢
    • 2021-02-03
    • 1970-01-01
    • 2015-12-26
    • 1970-01-01
    • 2012-01-07
    • 2018-12-27
    • 2015-05-07
    • 1970-01-01
    • 2017-04-07
    相关资源
    最近更新 更多