Sum*_*nth 2 java base64 filewriter apache-poi
我有一个 base64 编码的 String 。看起来像这样
UEsDBBQABgAIAAAAIQDhD46/jQEAACkGAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA .
Run Code Online (Sandbox Code Playgroud)
我解码了字符串并使用FileWriter. 但是当我尝试打开 doc 文件时,我收到一条错误消息,指出数据损坏。
我想知道在解码数据后将内容写入word文档需要遵循哪些步骤。下面是我所做的和出错的代码。
byte[] encodedBytes = stringBase64.getBytes();
byte[] decodedBytes = Base64.decodeBase64(encodedBytes);
String decodeString = new String(decodedBytes);
filewriter = new java.io.FileWriter("F:\xxx.docx”);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(decodeString);
Run Code Online (Sandbox Code Playgroud)
解码后的数据不是纯文本数据——它只是二进制数据。所以用 a 来写FileStream,而不是 a FileWriter:
// If your Base64 class doesn't have a decode method taking a string,
// find a better one!
byte[] decodedBytes = Base64.decodeBase64(stringBase64);
// Note the try-with-resources block here, to close the stream automatically
try (OutputStream stream = new FileOutputStream("F:\\xxx.doc")) {
stream.write(decodedBytes);
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好:
byte[] decodedBytes = Base64.decodeBase64(stringBase64);
Files.write(Paths.get("F:\\xxx.doc"), decodedBytes);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8083 次 |
| 最近记录: |