Programing

InputStream을 가상 파일로 변환하는 방법

lottogame 2020. 10. 24. 09:25
반응형

InputStream을 가상 파일로 변환하는 방법


입력 변수 중 하나가 java.io.File 유형이 될 것으로 예상하는 메소드가 있지만 내가 얻는 것은 InputStream뿐입니다. 또한 메서드의 서명을 변경할 수 없습니다.

실제로 파일 시스템에 파일을 쓰지 않고 InputStream을 파일 유형으로 변환하려면 어떻게해야합니까?


이와 같은 것이 작동합니다. 단순성을 위해 Java 7 기능 (닫을 수있는 리소스가있는 시도 블록)과 Apache commons-io의 IOUtils를 사용했습니다. 그것들을 사용할 수 없다면 조금 더 길지만 같은 생각입니다.

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 {

    public static final String PREFIX = "stream2file";
    public static final String SUFFIX = ".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;
    }

}

당신은 할 수 없습니다. 입력 스트림은 데이터의 일반 스트림 일 뿐이며 실제로 파일에서 생성된다는 보장은 없습니다. 누군가 웹 서비스를 읽음으로써 InputStream을 만들거나 String을 InputStream으로 변환했다면 이것을 파일에 연결할 방법이 없습니다. 따라서 할 수있는 유일한 일은 실제로 스트림의 데이터를 임시 파일에 쓰고 (예 : File.createTempFile 메서드 사용)이 파일을 메서드에 공급하는 것입니다.

참고 URL : https://stackoverflow.com/questions/4317035/how-to-convert-inputstream-to-virtual-file

반응형