いくつかのファイルを保存するためのTempディレクトリを作成しました:
//MARK: -create save delete from directory
func createTempDirectoryToStoreFile(){
var error: NSError?
let paths = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)
let documentsDirectory: AnyObject = paths[0]
tempPath = documentsDirectory.stringByAppendingPathComponent("Temp")
if (!NSFileManager.defaultManager().fileExistsAtPath(tempPath!)) {
NSFileManager.defaultManager() .createDirectoryAtPath(tempPath!, withIntermediateDirectories: false, attributes: nil, error: &error)
}
}
これで問題ありません。ディレクトリ内のすべてのファイルを削除したいのですが...
func clearAllFilesFromTempDirectory(){
var error: NSErrorPointer = nil
let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
var tempDirPath = dirPath.stringByAppendingPathComponent("Temp")
var directoryContents: NSArray = fileManager.contentsOfDirectoryAtPath(tempDirPath, error: error)!
if error == nil {
for path in directoryContents {
let fullPath = dirPath.stringByAppendingPathComponent(path as! String)
let removeSuccess = fileManager.removeItemAtPath(fullPath, error: nil)
}
}else{
println("seomthing went worng \(error)")
}
}
ファイルがまだ残っていることに気付きます...何が間違っていますか?
2つのこと、temp
ディレクトリを使用し、2番目のエラーを_fileManager.removeItemAtPath
_に渡し、ifに配置して失敗したものを確認します。また、エラーが設定されているかどうかをチェックするのではなく、メソッドに戻りデータがあるかどうかをチェックする必要があります。
_func clearAllFilesFromTempDirectory(){
var error: NSErrorPointer = nil
let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
var tempDirPath = dirPath.stringByAppendingPathComponent("Temp")
var directoryContents: NSArray = fileManager.contentsOfDirectoryAtPath(tempDirPath, error: error)?
if directoryContents != nil {
for path in directoryContents {
let fullPath = dirPath.stringByAppendingPathComponent(path as! String)
if fileManager.removeItemAtPath(fullPath, error: error) == false {
println("Could not delete file: \(error)")
}
}
} else {
println("Could not retrieve directory: \(error)")
}
}
_
正しい一時ディレクトリを取得するには、NSTemporaryDirectory()
を使用します
誰かがこれを最新のSwift/Xcodeバージョン:
Swift 2.x:
func clearTempFolder() {
let fileManager = NSFileManager.defaultManager()
let tempFolderPath = NSTemporaryDirectory()
do {
let filePaths = try fileManager.contentsOfDirectoryAtPath(tempFolderPath)
for filePath in filePaths {
try fileManager.removeItemAtPath(tempFolderPath + filePath)
}
} catch {
print("Could not clear temp folder: \(error)")
}
}
Swift 3.xおよびSwift 4:
func clearTempFolder() {
let fileManager = FileManager.default
let tempFolderPath = NSTemporaryDirectory()
do {
let filePaths = try fileManager.contentsOfDirectory(atPath: tempFolderPath)
for filePath in filePaths {
try fileManager.removeItem(atPath: tempFolderPath + filePath)
}
} catch {
print("Could not clear temp folder: \(error)")
}
}
Swift:
func clearTempFolder() {
let fileManager = FileManager.default
let tempFolderPath = NSTemporaryDirectory()
do {
let filePaths = try fileManager.contentsOfDirectory(atPath: tempFolderPath)
for filePath in filePaths {
try fileManager.removeItem(atPath: NSTemporaryDirectory() + filePath)
}
} catch let error as NSError {
print("Could not clear temp folder: \(error.debugDescription)")
}
}
Swift 4.ドキュメントディレクトリのサンプルフォルダー「diskcache
」からすべてのファイルを削除する例。上記の例は、「url」スタイルではないNSTemporaryDirectory() + filePath
を使用しているため、不明瞭です。あなたの便宜のために:
func clearDiskCache() {
let fileManager = FileManager.default
let myDocuments = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
let diskCacheStorageBaseUrl = myDocuments.appendingPathComponent("diskCache")
guard let filePaths = try? fileManager.contentsOfDirectory(at: diskCacheStorageBaseUrl, includingPropertiesForKeys: nil, options: []) else { return }
for filePath in filePaths {
try? fileManager.removeItem(at: filePath)
}
}
ドキュメントディレクトリからすべてのファイルを削除:Swift 4
func clearAllFile() {
let fileManager = FileManager.default
let myDocuments = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
do {
try fileManager.removeItem(at: myDocuments)
} catch {
return
}
}
ドキュメントディレクトリに一時フォルダーを作成(Swift 4)
func getDocumentsDirectory() -> URL {
// let paths = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)
// return paths[0]
let fileManager = FileManager.default
if let tDocumentDirectory = fileManager.urls(for: .documentDirectory, in: .userDomainMask).first {
let filePath = tDocumentDirectory.appendingPathComponent("MY_TEMP")
if !fileManager.fileExists(atPath: filePath.path) {
do {
try fileManager.createDirectory(atPath: filePath.path, withIntermediateDirectories: true, attributes: nil)
} catch {
NSLog("Couldn't create folder in document directory")
NSLog("==> Document directory is: \(filePath)")
return fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
}
}
NSLog("==> Document directory is: \(filePath)")
return filePath
}
return fileManager.urls(for: .documentDirectory, in: .userDomainMask).first!
}
一時ディレクトリからファイルを削除:(Swift 4)
func clearAllFilesFromTempDirectory(){
let fileManager = FileManager.default
do {
let strTempPath = getDocumentsDirectory().path
let filePaths = try fileManager.contentsOfDirectory(atPath: strTempPath)
for filePath in filePaths {
try fileManager.removeItem(atPath: strTempPath + "/" + filePath)
}
} catch {
print("Could not clear temp folder: \(error)")
}
}
ファイルを使用する
https://github.com/JohnSundell/Files
do {
for folder:Folder in (FileSystem().documentFolder?.subfolders)! {
try folder.delete()
}
} catch _ {
print("Error")
}