我一直在尝试获取一个读取文件的输入流,这是一个纯文本,并在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;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ@@"ÿÄ
答案 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-8
,US-ASCII
或ISO-8859-1
。
答案 2 :(得分:1)
如果你有一个普通的InputStream对象,你可以使用apache公共库类Base64InputStream构造函数直接从中获取Base64编码的流
答案 3 :(得分:0)
我找到了解决方案,受到这篇文章的启发getting base64 content string of an image from a mimepart in Java
我认为这是一种愚蠢的解码并再次编码base64代码,但这是我发现管理此问题的唯一方法。如果有人能提供更好的解决方案,我们也会非常感激。
由于