Возможно ли создать объект File из InputStream Есть ли способ создать объект java.io.File из java.io.InputStream? Мое требование - чтение файла из RAR. Я не пытаюсь написать временный файл, у меня есть файл в архиве RAR, который я пытаюсь прочитать. Ответ 1 Вам нужно создать новый файл и скопировать содержимое из InputStream в этот файл: File file = //... OutputStream outputStream = new FileOutputStream(file); IOUtils.copy(inputStream, outputStream); outputStream.close(); Я использую удобный IOUtils.copy(), чтобы избежать ручного копирования потоков. Также он имеет встроенную буферизацию. Ответ 2 Сначала создайте файл temp. File tempFile = File.createTempFile(prefix, suffix); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); IOUtils.copy(in, out); return tempFile; Ответ 3 В одной строке: FileUtils.copyInputStreamToFile(inputStream, file); (org.apache.commons.io) Ответ 4 Если вы не хотите использовать другую библиотеку, вот простая функция для преобразования InputStream в OutputStream. public static void copyStream(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } } Теперь вы можете легко записать InputStream в файл с помощью FileOutputStream - FileOutputStream out = new FileOutputStream(outFile); copyStream (inputStream, out); out.close();
Ответ 1 Вам нужно создать новый файл и скопировать содержимое из InputStream в этот файл: File file = //... OutputStream outputStream = new FileOutputStream(file); IOUtils.copy(inputStream, outputStream); outputStream.close(); Я использую удобный IOUtils.copy(), чтобы избежать ручного копирования потоков. Также он имеет встроенную буферизацию.
Ответ 2 Сначала создайте файл temp. File tempFile = File.createTempFile(prefix, suffix); tempFile.deleteOnExit(); FileOutputStream out = new FileOutputStream(tempFile); IOUtils.copy(in, out); return tempFile;
Ответ 4 Если вы не хотите использовать другую библиотеку, вот простая функция для преобразования InputStream в OutputStream. public static void copyStream(InputStream in, OutputStream out) throws IOException { byte[] buffer = new byte[1024]; int read; while ((read = in.read(buffer)) != -1) { out.write(buffer, 0, read); } } Теперь вы можете легко записать InputStream в файл с помощью FileOutputStream - FileOutputStream out = new FileOutputStream(outFile); copyStream (inputStream, out); out.close();