当前位置:  开发笔记 > IOS > 正文

如何在Mac OS X上获取默认临时目录?

如何解决《如何在MacOSX上获取默认临时目录?》经验,为你挑选了4个好方法。

我想为某些单元测试创​​建一些数据目录,我希望这些目录位于用户的默认临时目录中.

我想在/ tmp下我可以创建一个子目录,但我不想假设有人建立了自己的机器.

我正计划动态编写测试数据,这就是为什么我想把它放到一个临时目录中.



1> Dave Dribin..:

不要使用tmpnam()tempnam().它们不安全(有关详细信息,请参见手册页).不要假设/tmp.使用NSTemporaryDirectory()会同mkdtemp(). NSTemporaryDirectory()将为您提供更好的目录,但它可以返回nil.我使用过类似的代码:

NSString * tempDir = NSTemporaryDirectory();
if (tempDir == nil)
    tempDir = @"/tmp";

NSString * template = [tempDir stringByAppendingPathComponent: @"temp.XXXXXX"];
NSLog(@"Template: %@", template);
const char * fsTemplate = [template fileSystemRepresentation];
NSMutableData * bufferData = [NSMutableData dataWithBytes: fsTemplate
                                                   length: strlen(fsTemplate)+1];
char * buffer = [bufferData mutableBytes];
NSLog(@"FS Template: %s", buffer);
char * result = mkdtemp(buffer);
NSString * temporaryDirectory = [[NSFileManager defaultManager]
        stringWithFileSystemRepresentation: buffer
                                    length: strlen(buffer)];

您现在可以在里面创建文件temporaryDirectory.删除NSLogsfor生产代码.



2> Abizern..:

回顾那里的这个问题以及NSTemporaryDirectory()的文档,如果您使用的是10.6或更高版本,那么建议您使用URLForDirectory:inDomain:properForURL:create:error: NSFileManager中的方法,以获得更灵活的创建目录的方法.

它返回一个URL而不是一个字符串路径,这是我们建议使用的另一件事.



3> 小智..:

在Objective-C中,您可以使用NSTemporaryDirectory().



4> Jasper Bekke..:

使用tempnam(),tmpnam()或tmpfile()函数.


tempnam()和tmpnam()是不安全的.请改用mkstemp().
推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有