E.S. E.S. - 2 years ago 100
Apache Configuration Question

How to get a file name from a file's byte array?

I have the bytes representing a file that I am transmitting over a network. Besides reconstructing the file manually on the file system, how can I get the information from the File, such as getName(), getPath(), etc?

In other words:

  1. I start out with a File on machine A

  2. I use FileUtils to turn the file into a byte array

  3. I transmit that file over a network to machine B

  4. On machine B, I want to reconstruct that byte[] into a File and run methods such as getName()

The following does not work

  1. (File) bytes --> Does not convert

  2. ((File) ((Object) bytes))) --> Does not convert either

I would really rather not create a new temporary file on the filesytem, although I know there are static File.createTemp available that will do that. I'd prefer to just keep it in memory, construct a new File object from the byte[] array, get the information I Need and be done.

Actually, what would be even better is an API that will take the byte[] and from it, directly get the file name by parsing the bits.

Answer Source

The byte[] that is returned by FileUtils.readFileToByteArray is only the file contents, nothing else.

You should create your own class that is Serializable that includes two fields: a byte[] for the file contents, and a java.io.File that has everything else you need. You then serialize/deserialize your class into byte[], which is transmitted.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download