3

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

4

4 回答 4

6

AFile什么都不读。它表示操作系统(或虚拟文件等)中的文件(或目录)对象。要从中读取,您必须创建 Readers 或 Streams,API 将自行完成。如果 API 没有提供传入 Reader 或 InputStream 的方法,那么您就不走运了。

于 2012-06-11T14:46:40.867 回答
1

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

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

于 2012-06-11T15:39:13.627 回答
0

Java 使用InputStream(或OutpusStream)方法。使用 ajava.io.File已经强制执行太多,那么File类就不是您可以读取或写入的任何东西:它只是代表文件系统中的一个条目(然后您可以从中获取其关联的输入和输出流)。

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

于 2012-06-11T14:47:49.333 回答
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 不想做的事情。所以这个答案并不是很有用......

于 2012-06-11T14:48:47.583 回答