base 64 decode and write to doc file

I have a base64 encoded String . Which looks like this

UEsDBBQABgAIAAAAIQDhD46/jQEAACkGAAATAAgCW0NvbnRlbnRfVHlwZXNdLnhtbCCiBAIooAACAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA .

I decodeD the String and write it to word file using FileWriter. But When I tried opening the doc file i get an error saying corrupt data.

I would like to know what are the steps I need to follow to write the content to a word document after decoding the data . below is the code what I did and went wrong.

     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);
Jon Skeet
people
quotationmark

The decoded data isn't plain text data - it's just binary data. So write it with a FileStream, not 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);
}

Or even better:

byte[] decodedBytes = Base64.decodeBase64(stringBase64);
Files.write(Paths.get("F:\\xxx.doc"), decodedBytes);

people

See more on this question at Stackoverflow