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);

Теперь дальше вы можете записать эту строку в файл и читать дальше.

Другие вопросы по тегам