2015-08-23 15 views
6

Sto leggendo e scrivendo su un file di testo. C'è un'istanza in cui voglio cancellare il contenuto del file (ma non il file) come una sorta di reset. Come posso fare questo?Eliminazione del contenuto del file di testo

if ((dirs) != nil) { 
    var dir = dirs![0]; //documents directory 

    let path = dir.stringByAppendingPathComponent("UserInfo.txt"); 
    println(path) 
    let text = "Rondom Text" 

    //writing 
    text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil) 

    //reading 
    let text2 = String(contentsOfFile: path, encoding: NSUTF8StringEncoding, error: nil) 

    println(text2) 
+0

Hai ricevuto qualche errore con il tuo codice? – Bannings

+0

Niente di sbagliato con il codice precedente. Vorrei solo sapere come cancellare il contenuto del file ... cioè, sto scrivendo sul file e poi l'utente preme reset, quindi il file diventa vuoto. – TurtleFan

+1

'" ".writeToFile (path, atomically: false, encoding: NSUTF8StringEncoding, error: nil)' Il file verrà cancellato. – Bannings

risposta

5

È sufficiente scrivere una stringa vuota al file in questo modo:

let text = "" 
text.writeToFile(path, atomically: false, encoding: NSUTF8StringEncoding, error: nil) 
2

Se si imposta un NSFileHandle, è possibile utilizzare -truncateFileAtOffset:, passando 0 per l'offset.

Oppure, come indicato nei commenti, è possibile scrivere semplicemente una stringa vuota o dati nel file.

Oppure si può utilizzare un qualche tipo di struttura dati/database che non richiede di troncare manualmente i file :)

1

Swift 3.x

let text = "" 
do { 
    try text.write(toFile: fileBundlePath, atomically: false, encoding: .utf8) 
} catch { 
    print(error) 
} 

Swift 4.x

let text = "" 
do { 
    try text.write(to: filePath, atomically: false, encoding: .utf8) 
    } catch { 
    print(error) 
    }