Base 64 декодировать и записывать в файл документа
У меня есть строка в кодировке base64. Который выглядит так
UEsDBBQABgAIAAAAIQDhD46/jQEAACkGAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA .
Я декодирую строку и записываю ее в файл слова, используя FileWriter
, Но когда я попытался открыть файл DOC, я получаю сообщение об ошибке с поврежденными данными.
Я хотел бы знать, какие шаги мне нужно выполнить, чтобы записать содержимое в текстовый документ после декодирования данных. Ниже приведен код того, что я сделал, и что-то пошло не так.
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);
2 ответа
Решение
Декодированные данные - это не просто текстовые данные, это просто двоичные данные. Так что напишите это с FileStream
не 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);
}
Или даже лучше:
byte[] decodedBytes = Base64.decodeBase64(stringBase64);
Files.write(Paths.get("F:\\xxx.doc"), decodedBytes);
Пожалуйста, посмотрите.
byte[] encodedBytes = /* your encoded bytes*/
// Decode data on other side, by processing encoded data
byte[] decodedBytes= Base64.decodeBase64(encodedBytes );
String yourValue=new String(decodedBytes);
System.out.println("Decoded String is " + yourValue);
Теперь дальше вы можете записать эту строку в файл и читать дальше.