2012-07-13 140 views
0

我一直在试图让一个输入流中读取一个文件,ISA纯文本,并内嵌了一些图像和其他文件base64,并在String再写一遍。但保持编码,我的意思是,我想在字符串类似:Base64编码的InputStream字符串

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

我已经与类Base64InputStream多由包试图为org.apache.commons.codec,但我不能fiugure出来。任何形式的帮助将非常感激。提前致谢!

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;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ@@"ÿÄ

+1

我不明白。如果你不想解码它,你为什么不简单地使用一个简单的阅读器? – 2012-07-13 14:41:35

+0

由于base64编码未支载 – 2012-07-13 14:45:03

+1

可以使用BASE64在有限的一组是与几乎所有字符编码不变,例如ASCII或UTF-8字符的编码的字节。 Base64不是字符集编码。 – 2012-07-13 14:46:43

回答

1

包含一些的base64数据的文本文件可以使用的字符集来读取使用阅读器的代码

编辑

件的文件的其余部分。

Base64 encoding是平均编码字节在有限的一组是与几乎所有字符编码不变,例如ASCII或UTF-8字符的。

Base64是不是一个字符集编码,你没有指定你必须读入文件到一个字符串时,编码数据的base64一些。

因此,如果您的文本文件通常是UTF-8(这是可能的),你可以没有问题读它,即使它包含base64编码的流。只需使用基本的阅读器,并且不要使用Base64InputStream,如果您不想对其进行解码。

使用阅读器打开文件时,必须输入specify the encoding。如果你不知道它,我建议你用可能的测试,如UTF-8,US-ASCIIISO-8859-1

+1

感谢您的回答。问题不是固定的。问题是我没有打开任何文件。我正在使用MimeMessage和Multipart,只给出路径。我怎么能指定编码? – 2012-07-13 15:01:10

+0

你没有说过它是eml之前......你不必提供字符集作为RFC 822精确它只能包含US-ASCII。我认为MimeMessage处理一个简单的InputStream上的字符集。 – 2012-07-13 15:04:28

+0

显然不是一个简单的InputStream,我不能只读它并将其复制到一个简单的String – 2012-07-13 15:09:26

1

如果你有一个正常的InputStream对象比你可以使用Apache公共库类Base64InputStream构造直接从它那里得到Base64编码流

2

你有没有试着这样做:

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