gpt4 book ai didi

ios - iOS:删除目录中的文件

转载 作者:行者123 更新时间:2023-12-01 19:15:41 25 4
gpt4 key购买 nike

在我的应用程序中,我下载了带有ASiHttpRequest的pdf文件,并具有以下说明:

NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
[currentDownload setDownloadDestinationPath:[documentsDirectory stringByAppendingPathComponent:@"file.pdf"]];

它在第一时间工作正常,我可以打开此file.pdf,但是当我第二次下载此pdf时,似乎它不能代替文件,但可以合并。

在我执行此操作之前,但是它不起作用是哪里出了问题,或者从路径中删除此file.pdf的最佳方法是什么?
    - (void) removeFile{
NSString *extension = @"pdf";
NSFileManager *fileManager = [NSFileManager defaultManager];
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPDF = [paths objectAtIndex:0];

NSArray *contents = [fileManager contentsOfDirectoryAtPath:documentsDirectoryPDF error:NULL];
NSEnumerator *e = [contents objectEnumerator];
NSString *filename;
while ((filename = [e nextObject])) {

if ([[filename pathExtension] isEqualToString:extension]) {

[fileManager removeItemAtPath:[documentsDirectoryPDF stringByAppendingPathComponent:filename] error:NULL];
}
}
}

编辑

现在我用这种方法
- (void) removeFile{


NSError *error;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *path = [[paths objectAtIndex:0]stringByAppendingString:@"/file.pdf"];

NSFileManager *fileManager = [NSFileManager defaultManager];

NSLog(@"Documents directory before: %@", [fileManager contentsOfDirectoryAtPath:[paths objectAtIndex:0] error:&error]);


if([fileManager fileExistsAtPath:path] == YES)
{
NSLog(@"file exist and I delete it");

NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager removeItemAtPath:path error:&error];

NSLog(@"error:%@", error);
}

NSLog(@"Documents directory after: %@", [fileManager contentsOfDirectoryAtPath:[paths objectAtIndex:0] error:&error]);


}

此方法可以识别出在NSLog目录中有“file.pdf”
NSLog(@"Documents directory before: %@", [fileManager contentsOfDirectoryAtPath:[paths objectAtIndex:0] error:&error]);

但它崩溃后
"NSLog(@"file exist and I delete it");" 

而我只有一个“lldb”。

最佳答案

在下载新文件之前,您很可能没有删除文件,ASIHttpRequest会发现已经有一个同名文件,并向其附加数据而不是替换文件。我不确定PDF格式,但是通常不会导致合并的可读文件合并。无论如何,首先,您需要使用filemanager类提供的错误机制。传递NULL不好。很坏。因此,创建一个NSError对象,并将其传递给contentsOfDirectoryAtPathremoveItemAtPath方法,然后检查错误,确保操作成功完成。之后,您可能还需要检查扩展名的大写字母,因为基于Unix的系统区分大小写(尽管模拟器不区分大小写,设备也区分大小写),并且example.PDF文件不会根据您的代码被删除。

关于ios - iOS:删除目录中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13527870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com