0

我想在我的应用程序文档文件夹中创建一个文件,我必须存储一些内容。该内容取自我的本地主机文件。所以我写了下面的代码。但是这段代码没有在我的应用程序文件夹中创建文件。

   - (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

1

你也可以试试这个代码

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *fileName = @"yourFileName";
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/fileName"];

NSDate *data = [NSData dataWithContentsOfURL:YourUrl]; // get date form url
[data writeToFile:dataPath atomically:YES]; // save data in file
于 2013-10-11T07:28:27.593 回答
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 回答