2010-03-31 79 views
2

显然,NSFileManager是无法删除的mkstemp()创建的文件。下面是一些测试代码来证明这一点:无法在Mac OS X中删除)由mkstemp(创建的文件

char pathCString[] = "/tmp/temp.XXXXXX"; 
int fileDescriptor = mkstemp(pathCString); 
if (fileDescriptor == -1) { 
    NSLog(@"mkstemp failed"); 
} else { 
    close(fileDescriptor); 
    NSURL *url = [NSURL URLWithString:[NSString stringWithCString:pathCString encoding:NSASCIIStringEncoding]]; 
    NSLog(@"URL: %@", url); 
    NSError *error; 
    if (![[NSFileManager defaultManager] removeItemAtURL:url error:&error]) { 
     NSLog(@"could not delete file: %@", error); 
    } 
} 

下面是我在日志中看到,当我运行上面的代码:

URL: /tmp/temp.A7DsLW 
could not delete file: Error Domain=NSCocoaErrorDomain Code=4 UserInfo=0x1001108a0 "The file “temp.A7DsLW” doesn’t exist." 

我在Snow Leopard上运行此。关于为什么发生问题和/或如何解决问题的任何想法?

谢谢!

+0

事实证明,使用的unlink()不工作,所以显然这是一个的NSFileManager问题。 – splicer 2010-03-31 20:47:54

回答

4

不要使用-URLWithString :,使用-fileURLWithPath:您没有提出有效的文件URL。将路径字符串直接传递给NSFileManager的-removeItemAtPath:当然会更短。

此外,文件路径,总是与-stringWithUTF8String路径字符串:。

+0

谢谢Rainer!这就是诀窍:) – splicer 2010-03-31 22:06:03

相关问题