Min*_*ael 150 iphone directory document new-operator nsfilemanager
我只想在我的iPhone应用程序的文档文件夹中创建新文件夹.
有谁知道怎么做?
感谢您的帮助!
Vla*_*mir 324
我这样做的方式如下:
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Run Code Online (Sandbox Code Playgroud)
Tim*_*Tim 14
我没有足够的声誉评论Manni的答案,但[paths objectAtIndex:0]是获取应用程序文档目录的标准方法
因为NSSearchPathForDirectoriesInDomains函数最初是为Mac OS X设计的,其中每个目录可能不止一个,它返回一个路径数组而不是一个路径.在iOS中,生成的数组应包含目录的单个路径.清单3-1显示了此函数的典型用法.
清单3-1获取应用程序文档目录的路径
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
Run Code Online (Sandbox Code Playgroud)
Mir*_*bic 13
Swift 3解决方案:
private func createImagesFolder() {
// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first
if let documentDirectoryPath = documentDirectoryPath {
// create the custom folder path
let imagesDirectoryPath = documentDirectoryPath.appending("/images")
let fileManager = FileManager.default
if !fileManager.fileExists(atPath: imagesDirectoryPath) {
do {
try fileManager.createDirectory(atPath: imagesDirectoryPath,
withIntermediateDirectories: false,
attributes: nil)
} catch {
print("Error creating images folder in documents dir: \(error)")
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不喜欢"[paths objectAtIndex:0]",因为如果Apple添加一个以"A","B"或"C"开头的新文件夹,则"Documents"文件夹不是目录中的第一个文件夹.
更好:
NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Run Code Online (Sandbox Code Playgroud)
该夫特2溶液:
let documentDirectoryPath: String = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first!
if !NSFileManager.defaultManager().fileExistsAtPath(documentDirectoryPath) {
do {
try NSFileManager.defaultManager().createDirectoryAtPath(documentDirectoryPath, withIntermediateDirectories: false, attributes: nil)
} catch let createDirectoryError as NSError {
print("Error with creating directory at path: \(createDirectoryError.localizedDescription)")
}
}
Run Code Online (Sandbox Code Playgroud)
小智 5
这对我很好,
NSFileManager *fm = [NSFileManager defaultManager];
NSArray *appSupportDir = [fm URLsForDirectory:NSDocumentsDirectory inDomains:NSUserDomainMask];
NSURL* dirPath = [[appSupportDir objectAtIndex:0] URLByAppendingPathComponent:@"YourFolderName"];
NSError* theError = nil; //error setting
if (![fm createDirectoryAtURL:dirPath withIntermediateDirectories:YES
attributes:nil error:&theError])
{
NSLog(@"not created");
}
Run Code Online (Sandbox Code Playgroud)