是否有可能从InputStream创build一个File对象
有什么办法从java.io.InputStream
创build一个java.io.File
对象?
我的要求是从RAR读取文件。 我不是要写一个临时文件,我有一个文件,我正在尝试阅读RAR档案。
您需要创build新的文件并将InputStream
内容复制到该文件中:
File file = //... OutputStream outputStream = new FileOutputStream(file); IOUtils.copy(inputStream, outputStream); outputStream.close();
我正在使用方便的IOUtils.copy()
来避免手动复制stream。 它也有内置的缓冲。
首先创build一个临时文件。
File tempFile = File.createTempFile(prefix, suffix); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); IOUtils.copy(in, out); return tempFile;
在一行中:
FileUtils.copyInputStreamToFile(inputStream, file);
(org.apache.commons.io)
如果你不想使用其他库,这里有一个简单的函数来将InputStream
转换为OutputStream
。
public static void copyStream(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } }
现在,您可以使用FileOutputStream
轻松地将Inputstream
写入文件 –
FileOutputStream out = new FileOutputStream(outFile); copyStream (inputStream, out); out.close();