如何将 InputStream 转换为 File 对象 (Java)
要将 InputStream 转换为 File 对象,您可以使用以下方法:
- 使用 Apache Commons IO 库
您可以使用 Apache Commons IO 库中的 IOUtils 类将 InputStream 转换为 File 对象。首先,您需要将 InputStream 的内容写入临时文件中,然后使用该临时文件创建 File 对象。
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamToFileExample {
public static void main(String[] args) {
InputStream inputStream = null;
FileOutputStream outputStream = null;
try {
inputStream = getInputStream(); // 获取输入流
File tempFile = File.createTempFile('temp', '.tmp'); // 创建临时文件
outputStream = new FileOutputStream(tempFile);
IOUtils.copy(inputStream, outputStream); // 将输入流写入临时文件
File file = tempFile; // 创建 File 对象
// 使用 File 对象进行后续操作
System.out.println('File created: ' + file.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
} finally {
IOUtils.closeQuietly(inputStream);
IOUtils.closeQuietly(outputStream);
}
}
// 模拟获取 InputStream 的方法
private static InputStream getInputStream() {
// 返回您的 InputStream 对象
return null;
}
}
这将使用 Apache Commons IO 库中的 IOUtils 类将输入流的内容写入临时文件中,并创建 File 对象以供后续操作。
- 使用 Java 标准库
如果您不想依赖第三方库,您可以使用 Java 标准库中的 File.createTempFile() 方法创建临时文件,并将 InputStream 的内容写入该文件。
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
public class InputStreamToFileExample {
public static void main(String[] args) {
InputStream inputStream = null;
FileOutputStream outputStream = null;
try {
inputStream = getInputStream(); // 获取输入流
File tempFile = File.createTempFile('temp', '.tmp'); // 创建临时文件
outputStream = new FileOutputStream(tempFile);
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead); // 将输入流写入临时文件
}
File file = tempFile; // 创建 File 对象
// 使用 File 对象进行后续操作
System.out.println('File created: ' + file.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (inputStream != null) {
inputStream.close();
}
if (outputStream != null) {
outputStream.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 模拟获取 InputStream 的方法
private static InputStream getInputStream() {
// 返回您的 InputStream 对象
return null;
}
}
这将使用 Java 标准库中的 File.createTempFile() 方法创建临时文件,并将 InputStream 的内容写入该文件。
请注意,这两种方法都将 InputStream 的内容写入临时文件中,然后使用该临时文件创建 File 对象。这是因为 File 类需要文件路径来创建实例,并且不能直接从 InputStream 创建 File 对象。
原文地址: https://www.cveoy.top/t/topic/qnjF 著作权归作者所有。请勿转载和采集!