Iphone 如何从iOS应用程序中删除临时目录文件?

Iphone 如何从iOS应用程序中删除临时目录文件?,iphone,ios4,nsfilemanager,Iphone,Ios4,Nsfilemanager,我使用代码在使用设备时删除临时目录文件 -(void) clearAllTempFiles { NSString *path = NSTemporaryDirectory(); if ([path length] > 0) { NSError *error = nil; NSFileManager *fileManager = [NSFileManager defaultManager]; BOOL delete

我使用代码在使用设备时删除临时目录文件

-(void) clearAllTempFiles {
    NSString *path = NSTemporaryDirectory();
    if ([path length] > 0)
    {
        NSError *error = nil;  
        NSFileManager *fileManager = [NSFileManager defaultManager];

        BOOL deleted = [fileManager removeItemAtPath:path error:&error];

        if (deleted != YES || error != nil)
        {

        }
        else{
            // Recreate the Documents directory
            [fileManager createDirectoryAtPath:path withIntermediateDirectories:NO attributes:nil error:&error];
        }

    }
}
它不好用?这是从临时目录中删除文件的正确代码


请帮帮我好吗

您可以在代码中使用以下命令在mac上获取tmp目录名:

代码:

无论从何处调用该方法

这将返回tmp文件夹名称,然后在finder do(cmd-shift-G)中粘贴从控制台窗口得到的响应

以下内容将清除模拟器使用的TMP目录

代码:

NSString*tempPath=NSTemporaryDirectory();
NSArray*dirContents=[[NSFileManager默认管理器]目录内容路径:tempPath];
NSArray*onlyJPGs=[dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@“self ENDSWITH”.jpg'”];
NSFileManager*fileManager=[NSFileManager defaultManager];
如果(仅JPGS){
对于(int i=0;i<[仅JPGS计数];i++){
NSLog(@“目录计数:%i,[仅JPGS计数]);
NSString*contentsOnly=[NSString stringWithFormat:@“%@%@”,tempPath,[onlyJPGs objectAtIndex:i]];
[fileManager removeItemAtPath:contentsOnly错误:nil];
}
上面的代码只清除目录中的JPG,因此如果您想清除任何其他内容,请修改它。

我发现了一个简单的代码

NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
for (NSString *file in tmpDirectory) {
    [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
}

我对模拟器的回答…您没有删除临时目录文件的权限。该文件夹的权限为drwx------因此您不会删除文件。这是因为您的应用程序正在后台进程中运行。如果您不想在info.plist文件集中的后台运行应用程序,请执行以下操作:“应用程序不在后台运行”=是的。我的问题是:当我停留在on page的一个页面(登录屏幕)上时,我有3页应用程序,然后我按home按钮。现在我再次按下springboard上的应用程序图标,我不想显示登录屏幕,我想转到另一个屏幕(第二个屏幕)。但我得到了第一个屏幕(登录屏幕)在我使用cleanallTempdirectoryfile的第二个屏幕的背景屏幕上出现了吗?
NSString *tempPath = NSTemporaryDirectory();
NSArray *dirContents = [[NSFileManager defaultManager] directoryContentsAtPath:tempPath];
NSArray *onlyJPGs = [dirContents filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self ENDSWITH '.jpg'"]];

NSFileManager *fileManager = [NSFileManager defaultManager];

if (onlyJPGs) { 
    for (int i = 0; i < [onlyJPGs count]; i++) {
    NSLog(@"Directory Count: %i", [onlyJPGs count]);
    NSString *contentsOnly = [NSString stringWithFormat:@"%@%@", tempPath, [onlyJPGs objectAtIndex:i]];
    [fileManager removeItemAtPath:contentsOnly error:nil];
}
NSArray* tmpDirectory = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:NSTemporaryDirectory() error:NULL];
for (NSString *file in tmpDirectory) {
    [[NSFileManager defaultManager] removeItemAtPath:[NSString stringWithFormat:@"%@%@", NSTemporaryDirectory(), file] error:NULL];
}