清除文件内容

时间:2013-05-01 09:19:06

标签: ios objective-c file-io

我正在尝试删除iOS的内容文本文件。

或者,我可以删除该文件,然后在没有内容的情况下重新创建它。

对于此解决方案,我知道我可以使用[fileManager removeItemAtPath:filePath error:&error];删除该文件。重新创建文件对我来说很难。

我正在使用以下代码找到文件:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"myFile.txt"];

NSFileManager *fileManager = [NSFileManager defaultManager];

if([fileManager fileExistsAtPath:filePath])
{
    [fileManager removeItemAtPath:filePath error:&error];
}

//code to recreate the same file, just with no content

3 个答案:

答案 0 :(得分:4)

尝试

-[[NSFileManager defaultManager] createFileAtPath:path contents:[NSData data] attributes:nil]

答案 1 :(得分:2)

对于Swift

NSFileManager.defaultManager().createFileAtPath(path, contents: nil, attributes: nil)

答案 2 :(得分:0)

或者,您可以创建一个FileHandle实例并调用truncateFile(),如下所示:

var myFileHandle: FileHandle?
var fileName = "your_file_name.ext"

let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
let docPath = paths[0].appendingPathComponent(fileName)

if !FileManager.default.fileExists(atPath: docPath.path) {
    FileManager.default.createFile(atPath: docPath.path, contents: Data(), attributes: nil)
}

do {
    myFileHandle = try FileHandle(forWritingTo: docPath)
    myFileHandle?.truncateFile(atOffset: 0)
} catch let error {
    print("Could not initialize File Handle. Error: \(error.localizedDescription)")
}