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]);
}
}