objective c مشكلة كيف يمكنني الحصول على الدليل المؤقت الافتراضي على نظام التشغيل ماك أوس X؟




نظام ماك للكمبيوتر (4)

أود إنشاء بعض الأدلة من البيانات لبعض الاختبارات وحدة وأود أن هذه الدلائل لتكون في الدليل المؤقت الافتراضي للمستخدم.

أنا يمكن أن مجرد إنشاء سوبدير تحت / تمب أفترض، ولكن أنا لا أريد أن أجعل افتراض حول كيفية شخص ما قد أنشأت آلة خاصة بهم.

أنا أخطط على كتابة بيانات الاختبار على الطاير، وهذا هو السبب في أنني أود أن وضع هذا في دليل مؤقت.


في الهدف-C يمكنك استخدام نستيمبوراريديركتوري ().


إذا نظرنا إلى الوراء في هذا السؤال هناك وثائق نستيمبوراريديركتوري ()، إذا كنت تستخدم 10.6 أو أعلى، ثم يوصى باستخدام أورلفورديركتوري: إندمين: كومباتيفورورل: إنشاء: خطأ: طريقة من نسفيلماناجر للحصول على طريقة أكثر مرونة من إنشاء الدلائل .

ويعيد عنوان ورل بدلا من مسار السلسلة، وهو أمر آخر يوصى باستخدامه.


لا تستخدم 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 . إزالة NSLogs رمز الإنتاج.






temporary-directory