2012-06-18 9 views
5

Necesito eliminar el contenido de un archivo, antes de escribir más información en él. He intentado de diferentes maneras, como dónde elimino el contenido pero el archivo permanece del mismo tamaño, y cuando empiezo a escribir en él después de la eliminación, aparece un agujero en blanco con el tamaño de la eliminación antes de que se escriban mis nuevos datos .Eliminar contenido de archivos android

Esto es lo que he intentado ...

BufferedWriter bw; 
try { 
    bw = new BufferedWriter(new FileWriter(path)); 
    bw.write(""); 
    bw.close(); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

Y también he intentado esto ...

File f = new File(file); 
FileWriter fw; 

try { 
    fw = new FileWriter(f,false); 
    fw.write(""); 
} 
catch (IOException e) { 
    e.printStackTrace(); 
} 

por favor alguien puede ayudar con una solución a este problema.

+0

¿No puedes borrar el archivo y crear una nueva vacía? – Dalmas

+0

No, necesito ser el mismo archivo, pero gracias por su respuesta – kassy

Respuesta

0

Intente llamar al flush() antes de llamar al close().

FileWriter writer = null; 

try { 
    writer = ... // initialize a writer 
    writer.write(""); 
    writer.flush(); // flush the stream 
} catch (IOException e) { 
    // do something with exception 
} finally { 
    if (writer != null) { 
     writer.close(); 
    } 
} 
+0

Lo intenté, pero sigue siendo el mismo. No entiendo. Gracias por su respuesta – kassy

9
FileWriter (path, false) 

El falso le dirá el escritor para truncar el archivo en lugar de añadir a la misma.

+0

Sí, eso es lo que quiero porque quiero borrar el contenido del archivo. – kassy

+0

Disculpe, no vi el falso en el segundo código allí. – mbwasi

0

Puede ser porque no está cerrando el FileWriter, fw.close(); Además, no es necesario que "elimine" los datos anteriores, simplemente comience a escribir y sobrescribirá los datos anteriores. Así que asegúrate de cerrar todas partes.

Esto funciona para mí:

File f=new File(file); 
    FileWriter fw; 
    try { 
     fw = new FileWriter(f); 
     fw.write(""); 
     fw.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }