我正在使用一个需要java.io.File作为输入的API,但我只想向API发送一个字节数组。有没有办法创建一个File对象,它将从我的字节数组而不是从磁盘读取?
答案 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不想做的事情。所以这个答案并不真正有用......