【问题标题】:Objective c: How to only delete all file under a directory but keep the directory itself目标c:如何只删除目录下的所有文件但保留目录本身
【发布时间】:2012-03-02 08:30:08
【问题描述】:

我找到下面的代码来删除objective-c中的文件,但我只想删除Caches目录下的所有文件并保留目录Caches本身。

有人可以建议这样做的方法吗?

谢谢

NSFileManager *filemgr;

filemgr = [NSFileManager defaultManager];

if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL]  == YES)
        NSLog (@"Remove successful");
else
        NSLog (@"Remove failed");

更新

NSFileManager *filemgr;

filemgr = [NSFileManager defaultManager];

if ([filemgr removeItemAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] error: NULL]  == YES)
    NSLog (@"Remove successful");
else
    NSLog (@"Remove failed");

[filemgr createDirectoryAtPath: [NSHomeDirectory() stringByAppendingString:@"/Library/Caches"] withIntermediateDirectories:NO attributes:nil error:nil];

【问题讨论】:

  • 删除后重新创建Caches文件夹如何?
  • 您可以删除该目录,然后重新创建它,但您必须确保保持正确的权限。

标签: iphone objective-c ios


【解决方案1】:

遍历该目录中的文件。

NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *fileArray = [fileMgr contentsOfDirectoryAtPath:directory error:nil];
for (NSString *filename in fileArray)  {

    [fileMgr removeItemAtPath:[directory stringByAppendingPathComponent:filename] error:NULL];
}

【讨论】:

  • 感谢您的建议,但编译程序时出错。 Thread 1:EXC_BAD_ACCESS(code=1, address=0x8b8c0001)
  • 在哪一行显示错误? ,调试代码再说。
  • 我的错误,文件名只是名称,必须附加目录才能获得完整路径
【解决方案2】:
- (void) removeDocuments
{
    NSString *docDir = // get documents directory
    NSString *cacheDir = [docDir stringByAppendingPathComponent: @"cacheDir"];

    // check if cache dir exists

    // get all files in this directory
    NSFileManager *fm = [NSFileManager defaultManager];
    NSArray *fileList = [fm contentsOfDirectoryAtPath: cacheDir error: nil];

    // remove
    for(NSInteger i = 0; i < [fileList count]; ++i)
    {
        NSString *fp =  [fileList objectAtIndex: i];
        NSString *remPath = [cacheDir stringByAppendingPathComponent: fp];
        [fm removeItemAtPath: remPath error: nil];
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-09
    • 2023-03-04
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多