Actualización del diálogo de progreso en un proceso de carga

Los problemas que noté son:

  • tu bufferSizepuede ser la longitud total del archivo. entonces, en una sola lectura, el búfer puede estar lleno. Lo cambié a 512 para obtener un cambio notable en la barra de progreso
  • su progressvariable de restablecimiento dentro del bucle
  • Además, está escribiendo todo el búfer (es decir, desde 0hasta bufferSize) en la secuencia de salida. no el actual `bytesRead. en las últimas partes puede obtener valores de error.
  • antes de volver a leer, no estás descansando buffer

código actualizado

bufferSize = 512;
buffer = new byte[bufferSize];
// Read file
bytesRead = fileInputStream.read(buffer, 0, bufferSize);
progress=0;

while (bytesRead > 0)
{   

    progress+=bytesRead;
    outputStream.write(buffer, 0, bytesRead);
    bytesAvailable = fileInputStream.available(); 
    publishProgress((int)((progress*100)/(file.length())));
    bufferSize = Math.min(bytesAvailable, maxBufferSize);
    buffer = new byte[bufferSize];
    bytesRead = fileInputStream.read(buffer, 0, bufferSize);
}//end of while statement
fileInputStream.close();
publishProgress(100); 
outputStream.flush();
outputStream.close();
Respuesta 1

Tenemos mensajes provenientes de la parte superior con una marca de tiempo de vencimiento. Estos mensajes deben procesarse y enviarse a la cadena posterior con un tiempo de vida para varios tipos de mensajes que recibimos ...

Tengo un programa escrito en Java que lee un archivo de Excel y genera el contenido de la celda en la consola de salida de Java, este archivo de Excel contiene datos árabes. El programa funciona bien pero algunas letras árabes ...

Quiero obtener una vista de mi código una vez que se convierte en binario después de presionar Ejecutar clase pública HelloWorld {public static void main (String [] args) {System.out.println ("Hello World"); } } Es ...

Mi aplicación necesita descargar una base de datos desde un enlace, aquí está el código que uso para descargar la base de datos y guardarla en la tarjeta SD: public void DownloadBD () {try {URL url = new URL (...