Velvet Star Monitor

Standout celebrity highlights with iconic style.

updates

byte[] to file in Java

Writer Matthew Harrington

With Java:

I have a byte[] that represents a file.

How do I write this to a file (ie. C:\myfile.pdf)

I know it's done with InputStream, but I can't seem to work it out.

0

12 Answers

Use Apache Commons IO

FileUtils.writeByteArrayToFile(new File("pathname"), myByteArray)

Or, if you insist on making work for yourself...

try (FileOutputStream fos = new FileOutputStream("pathname")) { fos.write(myByteArray); //fos.close(); There is no more need for this line since you had created the instance of "fos" inside the try. And this will automatically close the OutputStream
}
7

Without any libraries:

try (FileOutputStream stream = new FileOutputStream(path)) { stream.write(bytes);
}

With Google Guava:

Files.write(bytes, new File(path));

With Apache Commons:

FileUtils.writeByteArrayToFile(new File(path), bytes);

All of these strategies require that you catch an IOException at some point too.

2

Another solution using java.nio.file:

byte[] bytes = ...;
Path path = Paths.get("C:\\myfile.pdf");
Files.write(path, bytes);
4

Also since Java 7, one line with java.nio.file.Files:

Files.write(new File(filePath).toPath(), data);

Where data is your byte[] and filePath is a String. You can also add multiple file open options with the StandardOpenOptions class. Add throws or surround with try/catch.

2

From Java 7 onward you can use the try-with-resources statement to avoid leaking resources and make your code easier to read. More on that here.

To write your byteArray to a file you would do:

try (FileOutputStream fos = new FileOutputStream("fullPathToFile")) { fos.write(byteArray);
} catch (IOException ioe) { ioe.printStackTrace();
}
1

Try an OutputStream or more specifically FileOutputStream

Basic example:

String fileName = "file.test";
BufferedOutputStream bs = null;
try { FileOutputStream fs = new FileOutputStream(new File(fileName)); bs = new BufferedOutputStream(fs); bs.write(byte_array); bs.close(); bs = null;
} catch (Exception e) { e.printStackTrace()
}
if (bs != null) try { bs.close(); } catch (Exception e) {}
File f = new File(fileName);
byte[] fileContent = msg.getByteSequenceContent();
Path path = Paths.get(f.getAbsolutePath());
try { Files.write(path, fileContent);
} catch (IOException ex) { Logger.getLogger(Agent2.class.getName()).log(Level.SEVERE, null, ex);
}

////////////////////////// 1] File to Byte [] ///////////////////

Path path = Paths.get(p); byte[] data = null; try { data = Files.readAllBytes(path); } catch (IOException ex) { Logger.getLogger(Agent1.class.getName()).log(Level.SEVERE, null, ex); }

/////////////////////// 2] Byte [] to File ///////////////////////////

 File f = new File(fileName); byte[] fileContent = msg.getByteSequenceContent();
Path path = Paths.get(f.getAbsolutePath()); try { Files.write(path, fileContent); } catch (IOException ex) { Logger.getLogger(Agent2.class.getName()).log(Level.SEVERE, null, ex); }
2

I know it's done with InputStream

Actually, you'd be writing to a file output...

This is a program where we are reading and printing array of bytes offset and length using String Builder and Writing the array of bytes offset length to the new file.

`Enter code here

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
//*This is a program where we are reading and printing array of bytes offset and length using StringBuilder and Writing the array of bytes offset length to the new file*//
public class ReadandWriteAByte { public void readandWriteBytesToFile(){ File file = new File("count.char"); //(abcdefghijk) File bfile = new File("bytefile.txt");//(New File) byte[] b; FileInputStream fis = null; FileOutputStream fos = null; try{ fis = new FileInputStream (file); fos = new FileOutputStream (bfile); b = new byte [1024]; int i; StringBuilder sb = new StringBuilder(); while ((i = fis.read(b))!=-1){ sb.append(new String(b,5,5)); fos.write(b, 2, 5); } System.out.println(sb.toString()); }catch (IOException e) { e.printStackTrace(); }finally { try { if(fis != null); fis.close(); //This helps to close the stream }catch (IOException e){ e.printStackTrace(); } } } public static void main (String args[]){ ReadandWriteAByte rb = new ReadandWriteAByte(); rb.readandWriteBytesToFile(); }
} 

O/P in console : fghij

O/P in new file :cdefg

You can try Cactoos:

new LengthOf(new TeeInput(array, new File("a.txt"))).value();

More details:

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy