2012-06-18 10 views
5

Ho bisogno di cancellare il contenuto di un file, prima di scrivere più informazioni in esso. Ho provato diversi modi, ad esempio dove cancello il contenuto ma il file rimane della stessa dimensione, e quando inizio a scriverlo dopo l'eliminazione, un buco vuoto sembra essere la dimensione dell'eliminazione prima che i miei nuovi dati vengano scritti .Eliminazione del contenuto del file android

Questo è quello che ho provato ...

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

E ho provato anche questo ...

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

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

favore qualcuno può aiutare con una soluzione a questo problema.

+0

Non puoi semplicemente cancellare il file e crearne uno nuovo vuoto? – Dalmas

+0

No, ho bisogno di essere lo stesso file ma grazie per la tua risposta – kassy

risposta

0

Prova a chiamare flush() prima di chiamare 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

ho provato ma è sempre lo stesso. Non capisco. Grazie per la risposta – kassy

9
FileWriter (path, false) 

Il falso vi dirà lo scrittore a troncare il file invece di aggiungere ad essa.

+0

Sì, questo è quello che voglio perché voglio cancellare il contenuto del file. – kassy

+0

Mi dispiace, non ho visto il falso nel secondo pezzo di codice lì. – mbwasi

0

Potrebbe essere perché non stai chiudendo il FileWriter, fw.close(); inoltre non è necessario "cancellare" i vecchi dati, basta iniziare a scrivere e sovrascriverà i vecchi dati. Quindi assicurati di essere chiuso ovunque.

Questo funziona per me:

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