java.io.File
からオブジェクトを作成する方法はありますjava.io.InputStream
か?
私の要件は、RARからファイルを読み取ることです。一時ファイルを書き込もうとはしていません。RARアーカイブ内に読み込もうとしているファイルがあります。
InputStream
新しいファイルを作成し、コンテンツをそのファイルにコピーする必要があります。
File file = //...
try(OutputStream outputStream = new FileOutputStream(file)){
IOUtils.copy(inputStream, outputStream);
} catch (FileNotFoundException e) {
// handle exception here
} catch (IOException e) {
// handle exception here
}
IOUtils.copy()
ストリームの手動コピーを避けるために便利なものを使用しています。また、組み込みのバッファリングも備えています。
最初に一時ファイルを作成します。
File tempFile = File.createTempFile(prefix, suffix);
tempFile.deleteOnExit();
FileOutputStream out = new FileOutputStream(tempFile);
IOUtils.copy(in, out);
return tempFile;
他のライブラリを使用したくない場合は、データを から にコピーする簡単な関数を次に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);
}
}
これで、 -Inputstream
を使用してファイルに簡単に書き込むことができます。FileOutputStream
FileOutputStream out = new FileOutputStream(outFile);
copyStream (inputStream, out);
out.close();
Java バージョン 7 以降を使用している場合は、try-with-resourcesを使用してFileOutputStream
. 次のコードはcommons-ioIOUtils.copy()
から使用します。
public void copyToFile(InputStream inputStream, File file) throws IOException {
try(OutputStream outputStream = new FileOutputStream(file)) {
IOUtils.copy(inputStream, outputStream);
}
}