Base 64 декодировать и записывать в файл документа

1

У меня строка с кодировкой base64. Что выглядит так

UEsDBBQABgAIAAAAIQDhD46/jQEAACkGAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA .

Я декодирую строку String и записываю ее в текстовый файл с помощью 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);
  • 1
    Вы закрывали буферизованный писатель после записи, т.е. bw.close ()?
  • 0
    попробуйте закрыть файл после записи данных, bw.close ();
Теги:
base64
apache-poi
filewriter

2 ответа

3
Лучший ответ

Декодированные данные не являются текстовыми данными - это просто двоичные данные. Поэтому напишите его с помощью 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);
  • 0
    Спасибо Джон. Написание их с помощью FileStream Работало.
  • 0
    работал для меня на файл слова
2

Пожалуйста, смотрите.

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

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

  • 0
    Пожалуйста, рассмотрите возможность включения некоторой информации о вашем ответе, а не просто отправьте код. Мы стараемся не просто исправить ситуацию, но и помочь людям учиться. Вы должны объяснить, что было не так в исходном коде, что вы сделали по-другому и почему ваши изменения сработали.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню