반응형
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
반응형
'Programing' 카테고리의 다른 글
레이크 작업에서 "gets"를 어떻게 사용합니까? (0) | 2020.10.24 |
---|---|
PHP에서 preg_match를 사용할 때“Unknown modifier 'g'in…”? (0) | 2020.10.24 |
브라우저에서 뒤로 버튼 클릭 감지 (0) | 2020.10.24 |
파생 된 *에서 기본 * 로의 변환이 있지만 액세스 할 수 없습니다. (0) | 2020.10.24 |
루프 백그라운드 작업 (0) | 2020.10.24 |