如何从文件的字节数组中获取文件名?

E.S*_*.S. 6 java apache arrays file apache-commons

我有代表我通过网络传输的文件的字节。除了在文件系统上手动重建文件外,如何从文件中获取信息,例如 getName()、getPath() 等?

换句话说:

  1. 我从机器 A 上的文件开始
  2. 我使用 FileUtils 将文件转换为字节数组
  3. 我通过网络将该文件传输到机器 B
  4. 在机器 B 上,我想将该 byte[] 重构为一个 File 并运行诸如 getName() 之类的方法

以下不起作用

  1. (文件)字节 --> 不转换
  2. ((File) ((Object) bytes))) --> 也不转换

我真的不想在文件系统上创建一个新的临时文件,尽管我知道有静态 File.createTemp 可以做到这一点。我更愿意将它保存在内存中,从 byte[] 数组构造一个新的 File 对象,获取我需要的信息并完成。

实际上,更好的是一个 API,它将获取 byte[] 并从中通过解析位直接获取文件名。

Gle*_*ane 9

返回byte[]FileUtils.readFileToByteArray只是文件内容,没有其他内容。

您应该创建自己的可序列化类,其中包含两个字段:一个byte[]用于文件内容,一个java.io.File包含您需要的其他所有内容。然后将您的类序列化/反序列化为byte[],并进行传输。