سؤال

فيما يبدو، 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's -RemoveItemAtpath: سيكون بالطبع أقصر.

أيضًا ، بالنسبة لمسارات الملفات ، قم دائمًا بتجميع سلسلة المسار مع -stringWithUtf8String :.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top