如何使文件夹内的子文件夹
问题描述:
我想将图像保存到文档/图像/ 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)")
答
主要问题是您不能创建一个目录,通过文件包括文件名(/../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")
}
可以打印路径,并通过终端检查它会给你想要的目录。
你可以添加:你收到错误信息吗? – muescha
或者你得到了什么和你的期望?你是如何检查它不成功的? – muescha
没有错误消息。我能够在文档文件夹创建,但我想创建文件夹内的文件夹,所以没有实现。我去了模拟器文档文件夹,并检查它是否被创建。 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是在图像文件夹。 –