我正在尝试解决如何管理应用文档文件夹中的文件和目录。我一直试图理解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];
}
我想知道的是如何创建和删除目录和文件。有谁能指出我正确的地方看?提前谢谢。
答案 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");
}