NSFileManager отлично работает на симуляторе, но не на устройстве - PullRequest
0 голосов
/ 15 июля 2009

У меня проблема с созданием каталогов и файлов с помощью NSFileManager на устройстве iPhone. Мой код, показанный ниже, отлично работает на симуляторе, но не на устройстве, не могли бы вы мне помочь? Дай мне несколько указаний, где может быть проблема, спасибо за каждый ответ ..

Я впервые создаю каталоги следующим образом:

NSFileManager *fileMgr = [NSFileManager defaultManager];
NSArray *arPaths = NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES);
NSString *appPath = [[NSString alloc] init];
appPath = [arPaths objectAtIndex:0];

strDownloadsDir = [[NSString alloc] init];
strDownloadsDir = [[appPath stringByAppendingPathComponent:@"/Other"] copy];
if(![fileMgr fileExistsAtPath:strDownloadsDir])
    [fileMgr createDirectoryAtPath:strDownloadsDir attributes:nil];

и затем я пытаюсь создать новый файл в этом каталоге следующим образом:

NSString *filePath = [strDownloadsDir stringByAppendingPathComponent:strDlFileName];
//Test whether this file exists, if not, create it
NSLog(@"%@", filePath);
if(![fileMgr fileExistsAtPath:filePath])
{
    if([fileMgr createFileAtPath:filePath contents:nil attributes:nil])
        NSLog(@"Creating new file at path %@", filePath);
    else
        NSLog(@"Failed to create new file.");
}

Кажется, что-то не так с целым NSFileManager, потому что, когда я использую fileExistAtPath с путем, заданным этим

NSArray *arPaths = NSSearchPathForDirectoriesInDomains(NSDownloadsDirectory, NSUserDomainMask, YES);
NSString *appPath = [[NSString alloc] init];
appPath = [arPaths objectAtIndex:0];

это тоже не работает, я пытался изменить каталог на NSDocumentsDirectory, но это не помогло

Ответы [ 3 ]

1 голос
/ 11 января 2010

может быть потому, что использование метода "createDirectoryAtPath: attrubutes:" УСТАРЕЛО яблоком .....

0 голосов
/ 15 апреля 2011
[[NSFileManager defaultManager] createDirectoryAtPath:strPath withIntermediateDirectories:YES attributes:nil error:nil];

        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
        NSString *documentsDirectory = [paths objectAtIndex:0];
        NSString *strFile = [documentsDirectory stringByAppendingPathComponent:@"hello/config.plist"];
        NSLog(@"strFile: %@", strFile);

        NSString *strPath = [documentsDirectory stringByAppendingPathComponent:@"hello"];
        if (![[NSFileManager defaultManager] fileExistsAtPath:strPath]) {
            NSLog(@"there is no Directory: %@",strPath);
            [[NSFileManager defaultManager] createDirectoryAtPath:strPath withIntermediateDirectories:YES attributes:nil error:nil];
        }

        NSArray *keys = [NSArray arrayWithObjects: @"username", @"password", @"serverName", @"serverPort", @"autoSave", nil];
        NSArray *values = [NSArray arrayWithObjects: @"11", @"11", @"11", @"11", @"11", nil];

        NSDictionary *configInfo = [[NSDictionary alloc] initWithObjects: values forKeys:keys];
        if (![configInfo writeToFile: strFile atomically: YES]) {
            NSLog(@"write file error");
        }
0 голосов
/ 29 июня 2010

Вы можете создать файл только в каталоге песочницы вашего приложения. Apple не позволит вам создать файл из этого.

Это причина, по которой вы потерпели неудачу на вашем телефоне?

...