2017-04-12 91 views
1

我想將圖像保存到文檔/圖像/ 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是在圖像文件夾。 –

回答

0

主要問題是您不能創建一個目錄,通過文件包括文件名(/../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

好了,現在我明白了..它像一個魅力。 –

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」

0
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") 

    } 

可以打印路徑,並通過終端檢查它會給你想要的目錄。

相關問題