【发布时间】:2015-09-24 22:38:44
【问题描述】:
我已经创建了一个类来对 base64 文件进行编码和解码。这门课有效。我试图对 MIME 编码器和解码器做同样的事情,但它不起作用,我不知道为什么。
public void encode64(File input, File output) throws IOException{
FileInputStream inputStream = new FileInputStream( input);
FileOutputStream outputStream = new FileOutputStream( output);
byte buff[] = new byte[300];
int r = 0;
while ( ( r = inputStream.read( buff)) > 0 ) {
byte[] realBuff = Arrays.copyOf( buff, r );
String b64 = Base64.getEncoder().encodeToString( realBuff);
outputStream.write( b64.getBytes());
}
inputStream.close();
outputStream.close();
}
public void decode64(File input, File output) throws IOException{
FileInputStream inputStream = new FileInputStream( input);
FileOutputStream outputStream = new FileOutputStream( output);
byte buff[] = new byte[300];
int r = 0;
while ( ( r = inputStream.read( buff)) > 0 ) {
byte[] realBuff = Arrays.copyOf( buff, r );
outputStream.write( Base64.getDecoder().decode( realBuff));
}
inputStream.close();
outputStream.close();
}
我已经改变了 encode64 方法的行
String b64 = Base64.getEncoder().encodeToString( realBuff);
为
String b64 = Base64.getMimeEncoder().encodeToString( realBuff);
从 decode64 方法的行
outputStream.write( Base64.getDecoder().decode( realBuff));
为
outputStream.write( Base64.getMimeDecoder().decode( realBuff));
而我的课只适用于 txt 文件。
【问题讨论】:
-
它不起作用是什么意思?你有什么错误吗?还是只是输出与您期望的不同?那有什么区别呢?
-
顺便说一句。编码器的wrap(OutputStream os) 方法更适合您的代码。恕我直言。
-
抱歉没有很好地解释我的问题。当我运行我的 java 类时,我尝试对文件进行编码和解码并恢复相同的文件。我在 base64 中得到了这个目标,但是当我尝试使用 MIME 时,我无法打开解码文件。