4

我正在尝试删除 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
4

3 回答 3

5

尝试

-[[NSFileManager defaultManager] createFileAtPath:path contents:[NSData data] attributes:nil]
于 2013-05-01T09:30:39.590 回答
2

对于斯威夫特

NSFileManager.defaultManager().createFileAtPath(path, contents: nil, attributes: nil)
于 2016-02-05T08:08:18.027 回答
1

或者,您可以创建一个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)")
}
于 2019-06-25T15:48:25.677 回答