studio programacion pasar objetos entre actividades java file-io

java - pasar - manual de programacion android pdf



¿Cuál es la mejor manera de transferir un archivo usando Java? (1)

Leer un solo byte a la vez será terriblemente ineficiente. También está confiando en available , lo cual rara vez es una buena idea. (Devolverá 0 si no hay bytes disponibles actualmente , pero puede haber más por venir).

Este es el tipo correcto de código para copiar una transmisión:

public void copyStream(InputStream input, OutputStream output) throws IOException { byte[] buffer = new byte[32*1024]; int bytesRead; while ((bytesRead = input.read(buffer, 0, buffer.length)) > 0) { output.write(buffer, 0, bytesRead); } }

(La persona que llama debe cerrar ambas transmisiones).

Estoy escribiendo código para subir un archivo de un cliente a mi servidor y el rendimiento no es tan rápido como creo que debería ser.

Tengo el fragmento de código actual que está haciendo la transferencia de archivos y me preguntaba cómo podría acelerar la transferencia.

Perdón por todo el código:

InputStream fileItemInputStream ; OutputStream saveFileStream; int[] buffer; while (fileItemInputStream.available() > 0) { buffer = Util.getBytesFromStream(fileItemInputStream); Util.writeIntArrToStream(saveFileStream, buffer); } saveFileStream.close(); fileItemInputStream.close();

Los métodos Util son los siguientes:

public static int[] getBytesFromStream(InputStream in, int size) throws IOException { int[] b = new int[size]; int count = 0; while (count < size) { b[count++] = in.read(); } return b; }

y:

public static void writeIntArrToStream(OutputStream out, int[] arrToWrite) throws IOException { for (int i = 0; i < arrToWrite.length; i++) { out.write(arrToWrite[i]); } }