Base64 InputStream到String

时间:2012-07-13 14:40:54

标签: java base64

我一直在尝试获取一个读取文件的输入流,这是一个纯文本,并在base64中嵌入了一些图像和另一个文件,并在String中再次写入。但是保持编码,我的意思是,我希望在String中有类似的东西:

/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 个答案:

答案 0 :(得分:2)

您是否尝试过这样做:

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

答案 1 :(得分:1)

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

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

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

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

使用阅读器打开文件时,您必须specify the encoding。如果您不知道,我建议您使用可能的方法进行测试,例如UTF-8US-ASCIIISO-8859-1

答案 2 :(得分:1)

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

答案 3 :(得分:0)

我找到了解决方案,受到这篇文章的启发getting base64 content string of an image from a mimepart in Java

我认为这是一种愚蠢的解码并再次编码base64代码,但这是我发现管理此问题的唯一方法。如果有人能提供更好的解决方案,我们也会非常感激。

由于