如何使文件夹内的子文件夹

问题描述:

我想将图像保存到文档/图像/ AET/1.jpg,但到目前为止,我只能保存到文档文件夹。如何使文件夹内的子文件夹

我写代码

let fileManager = FileManager.default 

    let paths = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("images") 

    try! fileManager.createDirectory(atPath: paths, withIntermediateDirectories: true, attributes: nil) 
    fileManager.changeCurrentDirectoryPath(paths) 

    let image = imagePic// UIImage(named: "apple.jpg") 
    print(paths) 


    let paths3 = (NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as NSString).appendingPathComponent("/\(chkString!).jpg") 
    print("chkString=\(chkString!)") 


    if !fileManager.fileExists(atPath: paths){ 
     try! fileManager.createDirectory(atPath: paths3, withIntermediateDirectories: true, attributes: nil) 
    }else{ 
     print("Already dictionary created.") 
    } 
    let imageData = UIImageJPEGRepresentation(image, 0.5) 


    // let pathToDatabase = paths3.appending("/\(chkString)") 
    // let pathToDatabase = paths3.appendingPathComponent("/\(chkString)") 
    fileManager.createFile(atPath: paths3 as String, contents: imageData, attributes: nil) 
    print("imagePath = \(paths3)") 
+0

你可以添加:你收到错误信息吗? – muescha

+0

或者你得到了什么和你的期望?你是如何检查它不成功的? – muescha

+0

没有错误消息。我能够在文档文件夹创建,但我想创建文件夹内的文件夹,所以没有实现。我去了模拟器文档文件夹,并检查它是否被创建。 imagePath =/Users/macXXX/Library/Developer/CoreSimulator/Devices/XXXX-0EXXXXX/data/Containers/Data/Application/XXXX0-1XXX-4XX-BXXX-XXXX/Documents/AET 12.jpg。同样我有一个文件夹/ Users/macXXX/Library/Developer/CoreSimulator/Devices/XXXX-0 EXXXXX/data/Containe rs/Data/Application/XXXX0-1XXX-4XX-BXXX-XXXX/Documents /图像,但我想我的AET.jpg是在图像文件夹。 –

主要问题是您不能创建一个目录,通过文件包括文件名(/../AET/1.jpg)的路径。您需要指定一个没有文件名的文件夹路径。

通常强烈建议使用URL相关的API。

本示例使用URL相关API,更多描述性变量名称以及Data的API将图像数据写入磁盘。

let chkString : String? = "AET" 

let fileManager = FileManager.default 

do { 
    let documentDirectoryURL = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false) 
    let imagesFolderURL = documentDirectoryURL.appendingPathComponent("images/\(chkString!)") 
    let imageURL = imagesFolderURL.appendingPathComponent("1.jpg") 

    let image = imagePic// UIImage(named: "apple.jpg") 

    if !fileManager.fileExists(atPath: imagesFolderURL.path){ 
     try fileManager.createDirectory(at: imagesFolderURL, withIntermediateDirectories: true, attributes: nil) 
    } else { 
     print("Already dictionary created.") 
    } 
    let imageData = UIImageJPEGRepresentation(image, 0.5) 
    try imageData!.write(to: imageURL) 

    print("imagePath =", imageURL.path) 
} catch { 
    print(error) 
} 
+0

好了,现在我明白了..它像一个魅力。 –

使用此:

let fileManager = FileManager.default 

let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String 
print(documentPath) 

let imageFolder = documentPath.appending("/images/AET") 

if !fileManager.fileExists(atPath: imageFolder) { 
    do{ 
     try fileManager.createDirectory(atPath: imageFolder, withIntermediateDirectories: true, attributes: nil) 
      } 
    catch (let error){ 
      print("Failed to create Directory: \(error.localizedDescription)") 
    } 
} 

你应该创建子文件夹像“/图片/ AET”

let fileManager = FileManager.default 
    let documentPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) 
    let path = "\(documentPath[0])/images/AET" 
    if !fileManager.fileExists(atPath: path) { 
     try! fileManager.createDirectory(atPath: path, withIntermediateDirectories: true, attributes: nil) 
    } else { 
     print("Directroy is already created") 

    } 

可以打印路径,并通过终端检查它会给你想要的目录。