1. 程式人生 > 其它 >Java中將InputStream轉換為File

Java中將InputStream轉換為File

以下是一些將InputStream轉換為File Java示例

手動將InputStream複製到FileOutputStream
Apache Commons IO – FileUtils.copyInputStreamToFile
Java 1.7 NIO Files.copy
1. FileOutputStream
1.1我們必須將資料從InputStream手動複製到OutputStream 。

InputStreamToFile.java
package com.mkyong;
 
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.InputStream; import java.net.URI; public class InputStreamToFile { private static final String FILE_TO = "d:\\download\\google.txt"; public static void main(String[] args) throws IOException { URI u = URI.create("https://www.google.com/");
try (InputStream inputStream = u.toURL().openStream()) { File file = new File(FILE_TO); copyInputStreamToFile(inputStream, file); } } // InputStream -> File private static void copyInputStreamToFile(InputStream inputStream, File file) throws IOException {
try (FileOutputStream outputStream = new FileOutputStream(file)) { int read; byte[] bytes = new byte[1024]; while ((read = inputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, read); } // commons-io //IOUtils.copy(inputStream, outputStream); } } } 2. Apache Commons IO 2.1 FileUtils.copyInputStreamToFile在Apache Commons IO中可用 pom.xml <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> InputStreamToFile2.java package com.mkyong; import org.apache.commons.io.FileUtils; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.net.URI; public class InputStreamToFile2 { private static final String FILE_TO = "d:\\download\\google.txt"; public static void main(String[] args) throws IOException { URI u = URI.create("https://www.google.com/"); try (InputStream inputStream = u.toURL().openStream()) { File file = new File(FILE_TO); // commons-io FileUtils.copyInputStreamToFile(inputStream, file); } } } 3. Java 1.7 NIO 3.1如果只想將inputStream儲存到某個檔案中,請嘗試使用Java 1.7 NIO Files.copy InputStreamToFile3.java package com.mkyong; import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.nio.file.Files; import java.nio.file.Paths; public class InputStreamToFile3 { private static final String FILE_TO = "d:\\download\\google.txt"; public static void main(String[] args) throws IOException { URI u = URI.create("https://www.google.com/"); try (InputStream inputStream = u.toURL().openStream()) { //Java 1.7 Files.copy(inputStream, Paths.get(FILE_TO)); } } } 4.舊時光 4.1在過去的Java 1.7之前,我們必須手動關閉所有資源。 InputStreamToFile4.java package com.mkyong; import java.io.*; public class InputStreamToFile4 { public static void main(String[] args) { InputStream inputStream = null; OutputStream outputStream = null; try { // read this file into InputStream inputStream = new FileInputStream("/Users/mkyong/holder.js"); // write the inputStream to a FileOutputStream outputStream = new FileOutputStream(new File("/Users/mkyong/holder-new.js")); int read = 0; byte[] bytes = new byte[1024]; while ((read = inputStream.read(bytes)) != -1) { outputStream.write(bytes, 0, read); } System.out.println("Done!"); } catch (IOException e) { e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { e.printStackTrace(); } } if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } } } 5.將檔案轉換為InputStream 這很容易: File file = new File("d:\\download\\google.txt"); InputStream inputStream = new FileInputStream(file);