0

我一直在尝试让输入流读取一个文件,该文件是纯文本,并且已经嵌入了一些图像和另一个文件,base64并在字符串中再次写入。但是保持编码,我的意思是,我想在字符串中有类似的东西:

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIf
IiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9Pjv/2wBDAQoLCw4NDhwQEBw7KCIoOzs7Ozs7

我一直在尝试使用Base64InputStream包中的类和更多内容,org.apache.commons.codec但我无法弄清楚。任何形式的帮助将非常感激。提前致谢!

编辑

使用阅读器的一段代码:

 BufferedReader br= new BufferedReader(new InputStreamReader(bodyPart.getInputStream()));
                        StringBuilder sb = new StringBuilder();
                        String line;
                        while ((line = br.readLine()) != null) {
                            sb.append(line);
                        }
                        br.close();

结果是:.DIC;ÿÛC;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ@@"ÿÄ

4

4 回答 4

2

您是否尝试过这样做:

final byte[] bytes64bytes = Base64.encodeBase64(IOUtils.toByteArray(is)); final String content = new String(bytes64bytes);

于 2015-04-27T12:30:22.810 回答
1

可以使用文件其余部分的字符集读取包含一些 base64 数据的文本文件。

Base64 编码是一种在有限的字符集中对字节进行编码的方法,几乎​​所有字符编码都没有变化,例如 ASCII 或 UTF-8。

Base64 不是字符集编码,在将文件读入字符串时,您不必指定您有一些 base64 编码数据。

因此,如果您的文本文件通常是 UTF-8(很可能),即使它包含 base64 编码流,您也可以毫无问题地读取它。只需使用基本阅读器,如果您不想解码,请不要使用 Base64InputStream。

使用阅读器打开文件时,必须指定编码。如果您不知道,我建议您使用可能的测试,UTF-8例如US-ASCIIISO-8859-1

于 2012-07-13T14:49:13.450 回答
1

如果您有一个普通的 InputStream 对象,则可以使用 apache 公共库类Base64InputStream构造函数直接从中获取 Base64 编码流

于 2013-12-19T12:43:45.507 回答
0

我找到了解决方案,受这篇文章的启发,从 Java 中的 mimepart 获取图像的 base64 内容字符串

我认为这是一种愚蠢的对base64代码的解码和编码,但这是我发现解决这个问题的唯一方法。如果有人可以提供更好的解决方案,那也将不胜感激。

谢谢

于 2012-07-16T09:14:19.160 回答