Tôi chỉ muốn tạo các thư mục mới trong thư mục tài liệu của ứng dụng iPhone của mình.
Có ai biết làm thế nào để làm điều đó?
Đánh giá cao sự giúp đỡ của bạn!
Tôi chỉ muốn tạo các thư mục mới trong thư mục tài liệu của ứng dụng iPhone của mình.
Có ai biết làm thế nào để làm điều đó?
Đánh giá cao sự giúp đỡ của bạn!
Câu trả lời:
Tôi làm theo cách sau:
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
Tôi không đủ uy tín để nhận xét về câu trả lời của Manni, nhưng [đường dẫn objectAt Index: 0] là cách tiêu chuẩn để nhận Thư mục Tài liệu của ứng dụng
http://developer.apple.com/l Library / ios / document / iPhone /Conualual /
Vì hàm NSSearchPathForDirectoriesInDomains được thiết kế ban đầu cho Mac OS X, nơi có thể có nhiều hơn một trong các thư mục này, nên nó trả về một mảng các đường dẫn thay vì một đường dẫn. Trong iOS, mảng kết quả sẽ chứa đường dẫn duy nhất đến thư mục. Liệt kê 3-1 cho thấy một cách sử dụng điển hình của hàm này.
Liệt kê 3-1 Lấy đường dẫn đến thư mục Documents của ứng dụng
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString* path = [@"~/Documents" stringByExpandingTildeInPath];
Giải pháp 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)")
}
}
}
}
Tôi không thích "[path objectAtIndex: 0]" bởi vì nếu Apple thêm một thư mục mới bắt đầu bằng "A", "B" oder "C", thì "Documents" -folder không phải là thư mục đầu tiên trong thư mục.
Tốt hơn:
NSString *dataPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents/MyFolder"];
if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath])
[[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder
Các Swift 2 giải pháp:
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)")
}
}
Cái này làm việc tốt cho tôi,
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");
}
Swift 4.0
let paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
// Get documents folder
let documentsDirectory: String = paths.first ?? ""
// Get your folder path
let dataPath = documentsDirectory + "/yourFolderName"
if !FileManager.default.fileExists(atPath: dataPath) {
// Creates that folder if not exists
try? FileManager.default.createDirectory(atPath: dataPath, withIntermediateDirectories: false, attributes: nil)
}
Mã sau có thể giúp tạo thư mục:
-(void) createDirectory : (NSString *) dirName {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0]; // Fetch path for document directory
dataPath = (NSMutableString *)[documentsDirectory stringByAppendingPathComponent:dirName];
NSError *error;
if (![[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error]) {
NSLog(@"Couldn't create directory error: %@", error);
}
else {
NSLog(@"directory created!");
}
NSLog(@"dataPath : %@ ",dataPath); // Path of folder created
}
Sử dụng :
[self createDirectory:@"MyFolder"];
Kết quả :
thư mục được tạo!
dataPath: / var / mobile / Ứng dụng / BD4B5566-1F11-4723-B54C-F1D0B23CBC / Documents / MyFolder
Swift 1.2 và iOS 8
Tạo thư mục tùy chỉnh (name = "MyCustomData") trong thư mục tài liệu nhưng chỉ khi thư mục không tồn tại.
// path to documents directory
let documentDirectoryPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first as! String
// create the custom folder path
let myCustomDataDirectoryPath = documentDirectoryPath.stringByAppendingPathComponent("/MyCustomData")
// check if directory does not exist
if NSFileManager.defaultManager().fileExistsAtPath(myCustomDataDirectoryPath) == false {
// create the directory
var createDirectoryError: NSError? = nil
NSFileManager.defaultManager().createDirectoryAtPath(myCustomDataDirectoryPath, withIntermediateDirectories: false, attributes: nil, error: &createDirectoryError)
// handle the error, you may call an exception
if createDirectoryError != nil {
println("Handle directory creation error...")
}
}