0

アプリケーション ドキュメント フォルダにファイルを作成したいのですが、いくつかのコンテンツを保存する必要があります。そのコンテンツは、localhost ファイルから取得します。だから私は以下のコードを書きます。しかし、このコードはアプリケーション ドキュメント フォルダにファイルを作成しませんでした。

   - (void) createFile
    {
        NSString *strPath = [NSString stringWithFormat:@"http://192.168.5.117/~mac/banana.obj"];

        NSData *data =[NSData dataWithContentsOfURL:[NSURL URLWithString:strPath]];

        NSString *strLastpath = [strPath lastPathComponent];

        NSString *folderName = [@"Object File/" stringByAppendingString:strLastpath];

        NSLog(@"Path : %@ \n File Name : %@",strPath,folderName);

        NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

        NSString *docsDir = [dirPaths objectAtIndex:0];

        databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent:folderName]];

        NSLog(@"Database Path : %@",databasePath);

        NSFileManager *filemgr = [NSFileManager defaultManager];

        if ([filemgr fileExistsAtPath:databasePath] == YES)
        {
            NSLog(@"File Exists");
        }
        else
        {
            NSLog(@"File not exists");
        }

        NSString *content = [NSString stringWithFormat:@"%@",data];

        [content writeToFile:strLastpath atomically:NO encoding:NSStringEncodingConversionAllowLossy error:nil];

    }

実行用にビルドしているときに、これを取得しました。

2013-10-11 11:36:38.833 SampleFileCreation[1321:c07] Path : http://192.168.5.117/~mac/banana.obj 

File Name : Object File/banana.obj

2013-10-11 11:36:38.834 SampleFileCreation[1321:c07] Database Path : /Users/mac/Library/Application Support/iPhone Simulator/6.1/Applications/4FA749DF-D12D-4956-AF76-140D2F981F17/Documents/Object File/banana.obj

2013-10-11 11:36:38.834 SampleFileCreation[1321:c07] File not exists
4

2 に答える 2

0

私は答えを見つけました。ファイルが正常に作成されました。

- (void) createFile {

    NSString *strPath = [NSString stringWithFormat:@"http://-.-.-.-/~mac/banana.obj"];        
    NSData *data =[NSData dataWithContentsOfURL:[NSURL URLWithString:strPath]];            
    NSString *strLastpath = [strPath lastPathComponent];        
    NSString *folderName = [@"Object File/" stringByAppendingString:strLastpath];        
    NSLog(@"Path : %@ \n File Name : %@",strPath,folderName);        
    NSArray *dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
                                                       NSUserDomainMask, YES);

    NSString *docsDir = [dirPaths objectAtIndex:0];        
    docsDir=[docsDir stringByAppendingString:@"/Object File"];        
    databasePath = [[NSString alloc] initWithString: 
                    [docsDir stringByAppendingPathComponent:folderName]];

    NSLog(@"Database Path : %@",databasePath);        
    NSError *theError = nil;       
    NSFileManager *filemgr = [NSFileManager defaultManager];

    **//I added this line**
    [filemgr createDirectoryAtPath:docsDir 
       withIntermediateDirectories:YES 
                        attributes:nil 
                             error:&theError];

    **//Changed this line**
    [data writeToFile:[docsDir stringByAppendingPathComponent:strLastpath]            
              options:NSDataWritingAtomic  
                error:&theError];

    if ([filemgr fileExistsAtPath:[docsDir stringByAppendingPathComponent:strLastpath]]){
        NSLog(@"File Exists");
    } else {
        NSLog(@"File not exists");
        NSLog(@"Tell Me error %@",[theError localizedDescription]);
    }       
}
于 2013-10-11T07:10:38.080 に答える