160

java.io.Fileからオブジェクトを作成する方法はありますjava.io.InputStreamか?

私の要件は、RARからファイルを読み取ることです。一時ファイルを書き込もうとはしていません。RARアーカイブ内に読み込もうとしているファイルがあります。

4

7 に答える 7

116

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()ストリームの手動コピーを避けるために便利なものを使用しています。また、組み込みのバッファリングも備えています。

于 2012-07-16T09:23:46.743 に答える
36

最初に一時ファイルを作成します。

File tempFile = File.createTempFile(prefix, suffix);
tempFile.deleteOnExit();
FileOutputStream out = new FileOutputStream(tempFile);
IOUtils.copy(in, out);
return tempFile;
于 2015-12-21T00:28:39.977 に答える
8

他のライブラリを使用したくない場合は、データを から にコピーする簡単な関数を次に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();
于 2017-07-18T05:31:09.783 に答える
0

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);
    }
}  
于 2018-08-08T15:52:22.740 に答える