ニーズの表明
バックエンドではPOIを通じてExcelファイルストリームが生成されるため、出力ストリーム(outputStream)を入力ストリーム(inputStream)に変換した後、入力ストリーム(inputStream)をFileオブジェクトに変換する必要があります。
質問: 入力ストリーム (inputStream) を File オブジェクトに変換する必要がある場合は、ローカル パスに従って File オブジェクトを生成する必要があります。つまり、とにかくファイルをローカルに生成する必要があります。
問題が解決しました
一連のデータ調査の結果、次の方法でおおよそのニーズを満たすことができることがわかりました。
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class StreamUtil {
static final String PREFIX = "stream2file";//前缀字符串定义文件名;必须至少三个字符
static final String SUFFIX = ".tmp";//后缀字符串定义文件的扩展名;如果为null,则将使用后缀".tmp"
public static File stream2file (InputStream in) throws IOException {
final File tempFile = File.createTempFile(PREFIX, SUFFIX);
tempFile.deleteOnExit();
try (FileOutputStream out = new FileOutputStream(tempFile)) {
IOUtils.copy(in, out);
}
return tempFile;
}
}
上記のプログラムを実行するtempFile
とそれが必要な File オブジェクトになります。
これを見て、これもローカルにファイルを生成しているのではないかと疑問に思うかもしれません。ただし、生成されるファイルの場所は次の場所 (コンピューターの一時ファイル ディレクトリ) に保存されるため、ファイルがローカルに生成されていないことがわかります。
C:\Users\TP\AppData\Local\Temp\tmp2447618135336474361.txt