0

我正在尝试研究如何管理我的应用程序的Documents文件夹中的文件和目录。我一直试图理解 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];
}

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

4

3 回答 3

1

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

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

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

于 2013-11-14T09:17:19.040 回答
1

NSFileManager类使您能够执行许多通用文件系统操作并将应用程序与底层文件系统隔离开来

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

于 2013-11-14T09:17:26.523 回答
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");
}
于 2013-11-14T09:51:34.547 回答