将InputStream转换为File经常在Java开发都会使用,下面详解InputStream转换为File的步骤。
第一步:将InputStream写入临时文件
如下所示:
// 创建一个临时文件 File tempFile = File.createTempFile("temp", ".tmp"); // 将InputStream中的数据写入到临时文件中 InputStream inputStream = new FileInputStream("input.txt");
第二步:将临时文件转换为File对象
如下所示:
// 将临时文件转换为File对象 File file = new File(tempFile.getAbsolutePath()); System.out.println("File: " + file.getAbsolutePath());
3.完整的InputStream转换为File
以下是一个完整的InputStream转换为File的示例代码:
import java.io.*; public class InputStreamToFileDemo { public static void main(String[] args) { try { // 创建一个临时文件 File tempFile = File.createTempFile("temp", ".tmp"); // 将InputStream中的数据写入到临时文件中 InputStream inputStream = new FileInputStream("input.txt"); OutputStream outputStream = new FileOutputStream(tempFile); byte[] buffer = new byte[1024]; int length; while ((length = inputStream.read(buffer)) != -1) { outputStream.write(buffer, 0, length); } // 关闭输入流和输出流 inputStream.close(); outputStream.close(); // 将临时文件转换为File对象 File file = new File(tempFile.getAbsolutePath()); System.out.println("File: " + file.getAbsolutePath()); } catch (IOException e) { e.printStackTrace(); } } }
在上面的示例中,主要就是如下步骤:
- 我们首先创建一个临时文件tempFile,然后创建一个InputStream对象inputStream,用于读取名为input.txt的文件。
- 接着创建一个OutputStream对象outputStream,用于将读取的内容写入到临时文件中。
- 在while循环中,每次从输入流中读取数据,将数据写入到输出流中,当读取的数据长度为-1时,表示数据已经全部读取完毕,结束循环。
- 最后,我们关闭输入流和输出流,并通过调用File类的getAbsolutePath()方法将临时文件转换为File对象。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注「mikechen」公众号,获取更多技术干货!
后台回复【面试】即可获取《史上最全阿里Java面试题总结》,后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》