2015-08-23 23 views
6

Tôi đang đọc và ghi vào tệp văn bản. Có một trường hợp mà tôi muốn xóa nội dung của tập tin (nhưng không phải là tập tin) như là một loại thiết lập lại. Tôi có thể làm cái này như thế nào?Xóa nội dung của tệp văn bản

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

Bạn có gặp bất kỳ lỗi nào với mã của mình không? – Bannings

+0

Không có gì sai với mã trên. Tôi chỉ muốn biết cách xóa nội dung của tệp ... tức là ở đây tôi đang ghi vào tệp và sau đó người dùng nhấn đặt lại, vì vậy tệp sẽ trống. – TurtleFan

+1

'" ".writeToFile (đường dẫn, nguyên tử: sai, mã hóa: NSUTF8StringEncoding, lỗi: nil)' Tệp sẽ bị xóa. – Bannings

Trả lời

5

Đơn giản chỉ cần viết một chuỗi rỗng đến tập tin như thế này:

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

Nếu bạn thiết lập NSFileHandle, bạn có thể sử dụng -truncateFileAtOffset:, chuyển 0 để bù trừ.

Hoặc, như được chỉ ra trong các nhận xét, bạn chỉ cần viết một chuỗi hoặc dữ liệu trống vào tệp.

Hoặc bạn có thể sử dụng một số loại cấu trúc dữ liệu/cơ sở dữ liệu mà không đòi hỏi bạn phải tự cắt xén 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) 
    } 
Các vấn đề liên quan