2017-04-12 11 views
1

ドキュメントをimages/images/AET/1.jpgに保存したいが、ドキュメントフォルダにのみ保存できた。あなたが"/画像/ AET"のようにサブフォルダを作成する必要がありフォルダ内のサブフォルダを作成する方法

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

は、私は、コード

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/Container rs/Data/Application/XXXX0-1XXX-4XX-BXXX-XXXX/Documentsのフォルダを持っています/ images私は私の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

使用これを書きました。

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

    } 

あなたはそれはあなたがしたいディレクトリを与える端子を介してパスを印刷して確認することができます。

関連する問題