我在使用NSFileManager功能时遇到了一些问题。 这在Simulator和iPhone设备(iOS 5.1)上都会发生。
基本上,我有一堆文件存储在我创建的文档中。现在我正在尝试将文件(存储在路径中)移动到具有其他名称的同一目录,以检查删除是否有效。
if ([[NSFileManager defaultManager] isDeletableFileAtPath:path]) {
BOOL success = [[NSFileManager defaultManager] moveItemAtPath:path toPath:[path stringByAppendingString:@".deleted"] error:&error];
if (!success) {
NSLog(@"Error removing file at path: %@", error.localizedDescription);
}
}
此输出是路径和路径 .deleted中的文件。 我最终只是想使用 removeItemAtPath 删除该文件,但这不起作用。它会返回成功,但如果我在文件目录中看到它,我甚至可以在一小时后看到它。
答案 0 :(得分:37)
如果您要删除文件,请使用{/ 1}}
removeItemAtPath:myPath error:NULL
答案 1 :(得分:1)
将此用于搜索路径并删除视频
(NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
NSString *dataFilePath = [[[self applicationDocumentsDirectory]
stringByAppendingPathComponent:@"Data.nosync"]
stringByAppendingPathComponent:[NSString stringWithFormat:@"%@-%@.mp4",[dicForDelete valueForKey:keyVideoId],[dicForDelete valueForKey:keyVideoName]]];
NSError *error;
if ([[NSFileManager defaultManager] isDeletableFileAtPath:dataFilePath]) {
BOOL success = [[NSFileManager defaultManager] removeItemAtPath:dataFilePath error:&error];
if (success) {
NSLog@"file deleted ");
}else
{
NSLog@"file not deleted ");
}
}
答案 2 :(得分:1)
我遇到了同样的问题。我仍然感到困惑,为什么修复工作,但值得一提,以防其他人解释它。
我发现[[NSFileManager defaultManager] removeItemAtURL:url error:&error]
会在第一次尝试时返回false,但是会出现nil错误。在第二次尝试时,它将返回true。
以下是我的代码:
// success == NO error = nil
BOOL success = [[NSFileManager defaultManager] removeItemAtURL:storeUrl error:&error];
// success == YES error = nil
success = [[NSFileManager defaultManager] removeItemAtURL:storeUrl error:&error];
我发现如果我创建了自己的NSFileManager实例,它将在第一次尝试时起作用。
NSFileManager *fm = [[NSFileManager alloc] init];
[fm removeItemAtURL:storeUrl error:&error];
我在iOS9模拟器上运行。这闻起来像一个臭虫。我要提交雷达。
答案 3 :(得分:1)
当你使用NSFileManager时,我只是想出了一些非常重要的东西。您必须了解App Sandboxing。
let documentDirectory = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, .UserDomainMask, true)[0]
此行返回应用程序沙箱的路径文档目录。在文档目录中使用FileManager创建文件时(例如),不要保存完整文件路径,只保存当前文档目录中的路径。
您将能够重新创建所创建文件的完整路径。
希望(5年后)帮助开发人员; - )