Puntero de la cabeza FileOutputStream

Estoy buscando alguna confirmación de que FileOutputStream funciona como creo que sí. Estoy descargando un archivo y, si pierdo la conexión de red, intentar reanudar la descarga desde donde lo dejó.

¿Cómo estoy tratando de hacer esto es abrir el FileOutputStream como no añadir y, a continuación, escribir nada en un desplazamiento. Mi pregunta es que el trabajo o no la apertura como no añadir borrar el contenido? ¿También si escribo en un offset seguirá escribiendo después de esa posición en el archivo en llamadas posteriores para escribir?

 File outFile = new File(outFileName); FileOutputStream out = new FileOutputStream(outFile); HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection(); long fileSize = connection.getContentLength(); int status = DOWNLOADING; connection.connect(); InputStream in = connection.getInputStream(); long downloaded = in.skip(outFile.length()); publishProgress(downloaded, fileSize); try { int read = 0; byte buffer[] = new byte[MAX_BUFFER_SIZE]; // Skip ahead in the out buffer out.write(buffer, (int)downloaded, read); while(status == DOWNLOADING) { if(!NetworkUtils.isConnected(_context)) { // This breaks us out of the doInBackground in the AsyncTask _downloadFailed = true; throw new Exception("Network Connectivity Lost!"); } read = in.read(buffer); if(read == -1) { publishProgress(fileSize); break; } out.write(buffer, 0, read); downloaded += read; publishProgress(downloaded); } } finally { out.close(); in.close(); connection.disconnect(); } 

También debe echar un vistazo a la clase RandomAccessFile , que le permitirá buscar una determinada posición y empezar a escribir desde allí sin truncar el archivo.

Usted debe leer el api doc más cuidadosamente.

Abrir un FileOutputStream en no-append más siempre borra el contenido del archivo y escribe al principio. Además, el argumento de desplazamiento del método de escritura es un desplazamiento desde el comienzo de los datos (el argumento de matriz de bytes), no desde el principio del archivo.

Sólo debe abrir la secuencia en el modo de anexar y comenzar a escribir cuando haya leído n bytes de datos, siendo n el número de bytes ya presentes en el archivo.

  • Facebook Login / Google Login - ¿La misma actividad?
  • La vista personalizada no aparece
  • ToByteArray () no se resolverá para el inicio de sesión de facebook
  • Transferencia de Bluetooth La aplicación se detiene después de usar InputStream.read () sin error
  • Gson a HashMap
  • El método getSupportFragmentManager () no está definido
  • Tengo un error: setOnItemClickListener no se puede utilizar con un spinner, ¿qué está mal?
  • Android O casting para findViewById ya no es necesario?
  • Android Google map Excepción de puntero nulo al agregar marcador
  • Iniciar una intención de cámara, pero no guardar imagen
  • Longitud máxima de Android versionName / versionCode (Manifest)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.