Можно ли преобразовать Outpustream или InputStream в общий файл?

Можно ли преобразовать Outputstream или Inputstream в File? Мне это нужно, потому что методы открытия содержимого файла на диске Google совместимы с Inputstream или Outputstream, а не с Files.

Я объясняю: я хочу иметь возможность доступа к данным из DriveFile из File, используя преобразование из OutputStream или InputStream в File, чтобы этот файл мог быть выполнен система как обычная.

1
задан 06.01.2017, 19:12
0 ответов

Используя Java сигара, без книжных магазинов:

//copiaremos el contenido del stream en bloques de 4 KBytes
static final int CHUNK_SIZE = 1024 * 4;

public void creaArchivo(String ruta, InputStream is)
    throws IOException {
    //BufferedOutputStream es para escribir el contenido del stream
    //por partes para no llenar la memoria y porque es más rápido
    //FileOutputStream es para indicar que vamos a escribir el
    //contenido en un archivo
    OutputStream os = new BufferedOutputStream(new FileOutputStream(new File(ruta)));
    byte[] chunk = new byte[CHUNK_SIZE];
    int bytesLeidos = 0;
    //mientras que podamos leer bytes del stream de entrada
    //en bloques de tamaño CHUNK_SIZE
    while ( (bytesLeidos = is.read(chunk)) > 0) {
        //escribir los bytes leidos en el arreglo
        //desde la posición 0 hasta la posición marcada por
        //el valor de la variable bytesLeidos
        os.write(chunk, 0, bytesLeidos);
    }
    os.close();
}

Если ты не хочешь написать этот код, ты можешь добавлять книжный магазин Commons IO и использовать метод IOUtils#copy(InputStream, OutputStream).

После пишешь файл к локальному диску, как уже у тебя есть маршрут, ты можешь делать то, что он продолжает:

File file = new File(ruta);

Считай, что ни InputStream ни OutputStream они знают информацию о файле, с которым они работают, только знают, что есть разгрузка байт, в которую они должны читать (InputStream) или писать (OutputStream).

3
ответ дан 03.12.2019, 17:51

Ты можешь использовать массив байт.

//OutputStream
ByteArrayOutputStream outputStream = new ByteArrayOutputStream(new File(archivoSalidaFile));

//byte[] -> InputStream
ByteArrayInputStream inputStream = new ByteArrayInputStream( outputStream.toByteArray() )

Это простой способ превращать с OutputStream до InputStream в Java.

-1
ответ дан 03.12.2019, 17:51

Чтобы создавать один File начиная с одного InputStream могут с книжным магазином индейца-апачиа commons:

FileUtils.copyInputStreamToFile(el_inputStream, el_File);

Нужно понимать, что InputStream он, откуда он читается.

В то время как OutputStream он, куда он пишет себе, из-за того, что я не вижу этот, зачем тебя подал бы в этом случай.

Edit

Предполагается, что Guava совместим с android, а следовательно вероятно ésto я помог тебе.

-2
ответ дан 03.12.2019, 17:51