gpt4 book ai didi

cocoa - 无法删除 Mac OS X 上 mkstemp() 创建的文件

转载 作者:行者123 更新时间:2023-12-03 16:30:07 25 4
gpt4 key购买 nike

显然,NSFileManager 无法删除由 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 上运行它。关于问题发生的原因和/或如何解决它有什么想法吗?

谢谢!

最佳答案

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

此外,对于文件路径,请始终使用 -stringWithUTF8String: 制作路径字符串。

关于cocoa - 无法删除 Mac OS X 上 mkstemp() 创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2556092/

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