管理应用程序的Documents目录中的文件和目录

时间:2013-11-14 09:12:13

标签: ios objective-c nsdocumentdirectory

我正在尝试解决如何管理应用文档文件夹中的文件和目录。我一直试图理解NSData类,但没有快乐。我已设法使用以下代码将图像写入 Documents 文件夹。

- (IBAction)writeImage:(id)sender
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *savedImagePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];

UIImage *image = [UIImage imageNamed:@"Default.png"];
NSData *imageData = UIImagePNGRepresentation(image);
[imageData writeToFile:savedImagePath atomically:NO];
}

我想知道的是如何创建和删除目录和文件。有谁能指出我正确的地方看?提前谢谢。

3 个答案:

答案 0 :(得分:1)

对于您可以使用的文件夹:

 [[NSFileManager defaultManager] createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error];

它将在给定路径上创建所有文件夹,这很酷:)

答案 1 :(得分:1)

NSFileManager类使您能够执行许多通用文件系统操作,并将应用程序与基础文件系统隔离。

NSFileManager类中有一个名为+defaultManager的类方法,它总是为您提供相同的FileManager对象或共享对象,并且可以使用此共享文件管理器对象执行大多数文件操作。

答案 2 :(得分:0)

您可以通过避免覆盖您的文件进行编写(如果文件已经存在,如下所示),并且还可以检查该文件夹是否可写。

NSString *imageName = @"Default.png";
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectoryPath = [paths objectAtIndex:0];
NSString *savedImagePath = [NSString stringWithFormat:@"%@/%@", documentsDirectoryPath, imageName];

// Write only if file does not exist.
if (![[NSFileManager defaultManager] fileExistsAtPath:savedImagePath]) {
    NSData *imageData = UIImagePNGRepresentation(image);
    [imageData writeToFile:savedImagePath atomically:NO];
}


// Check if folder is writable
NSString *folderPath = @"someFolderPath";
if ([[NSFileManager defaultManager] isWritableFileAtPath:folderPath]) {
    NSLog(@"Folder is writable");
}else {
    NSLog(@"Folder is not writable");
}