主题:Java中将InputStream转换为File

admin 2023年05月17日 533

以下是一些将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);

    }

}

}

  1. Apache Commons IO 2.1 FileUtils.copyInputStreamToFile在Apache Commons IO中可用

pom.xml

commons-io commons-io 2.6 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);
    }

}

}

  1. 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);