构造一个从字节数组中读取的java.io.File

时间:2012-06-11 14:43:21

标签: java

我正在使用一个需要java.io.File作为输入的API,但我只想向API发送一个字节数组。有没有办法创建一个File对象,它将从我的字节数组而不是从磁盘读取?

4 个答案:

答案 0 :(得分:5)

File没有阅读任何内容。它表示操作系统(或虚拟文件等)中的文件(或目录)对象。要阅读它,您必须创建API才能自己创建的Readers或Streams。如果API没有提供传入Reader或InputStream的方法,那你就不走运了。

答案 1 :(得分:1)

您可以打开一个临时文件:open temp file in java

然后,如果你的byte []并通过一些OutputStream / Writer将它全部写入临时文件,你应该拥有你需要的东西。然后,您可以在不在磁盘上创建文件的情况下传递文件。

答案 2 :(得分:0)

Java使用InputStream(或OutpusStream)方法。使用java.io.File已经强制执行太多,那么File类不是您可以读取或写入的任何内容:它只是表示文件系统中的条目(然后您可以从中进行,但就在此时,获取其相关的输入和输出流)。

所以你应该有一个接受通用InputStream的方法。如果API只支持File对象,那么它的设计显然很差(或者您试图以非允许的方式使用它们)。

答案 3 :(得分:0)

String strFilePath = "filePath";
byte[] writeBytes = ...;
try {
  FileOutputStream fos = new FileOutputStream(strFilePath);
  fos.write(byteArray);
  fos.close();
} catch(FileNotFoundException ex) {
  // handle FileNotFoundException here
} catch(IOException ioe) {
  // handle IOException here
}
编辑:通常我不是只是给代码的粉丝,但这整个流媒体的东西过去常常让我感到困惑,所以这里有一个解决方案;)。

EDIT2:好的,我刚刚意识到,这正是OP不想做的事情。所以这个答案并不真正有用......