Directory exist...
Jcb84
Membre
Bonjour à tous,
Quelqu'un aurait il 3 minutes pour relire le bout de code ci-dessous et me dire pourquoi mon test sur l'existence du répertoire (et sur le fichier) échoue systématiquement ...
Mon code fonctionne mais j'aimerai bien comprendre le pourquoi du comment...
Merci d'avance.
Jc
func createPrivateFolder(){
let fileManager = FileManager.default
var isDirExist = false
var isDirectory = ObjCBool(true)
let paths:[String] = NSSearchPathForDirectoriesInDomains(.applicationSupportDirectory, .userDomainMask, true)
let directory:String = paths[0]
let cacheDirectoryUrl = URL(fileURLWithPath: directory, isDirectory: true).appendingPathComponent(Bundle.main.bundleIdentifier ?? "MyApp").appendingPathComponent("Cache")
print(directory)
print(cacheDirectoryUrl.absoluteString)
print(cacheDirectoryUrl.absoluteURL)
// Est-ce que le répertoire existe ?
if !fileManager.fileExists(atPath: cacheDirectoryUrl.absoluteString, isDirectory: &isDirectory ){
do {
try fileManager.createDirectory(at: cacheDirectoryUrl , withIntermediateDirectories: true, attributes: nil)
print("Creation folder ok !")
isDirExist = true
}
catch {
print("Error: Unable to create directory: \(error)")
}
} else {
print("Directory already exists !")
isDirExist = true
}
if isDirExist {
// step 2 creation fichier
let fichierFolderXml = cacheDirectoryUrl.appendingPathComponent("folder.dat")
print("create file ?")
if !fileManager.fileExists(atPath : fichierFolderXml.absoluteString ){
do {
let pendingInstallId = "yourId:\(UUID())"
try pendingInstallId.write(to: fichierFolderXml, atomically: false, encoding: String.Encoding.utf8)
print("create file OK")
}
catch {
print("Error: Unable to create file: \(error)")
}
} else {
print("folder.xml already exists in folder...")
}
}
}
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
if !fileManager.fileExists(atPath: cacheDirectoryUrl.absoluteString, isDirectory: &isDirectory )
=>if !fileManager.fileExists(atPath: cacheDirectoryUrl.path, isDirectory: &isDirectory )
?Pareil pour :
if !fileManager.fileExists(atPath : fichierFolderXml.absoluteString ){
=>if !fileManager.fileExists(atPath : fichierFolderXml.path ){
Merci !
Il me semblait pourtant avoir essayer avec .path ... je me doutais que c'etait le %20 qui me mettais le bronx...
Apple recommande fortement d'utiliser les méthodes d'URL à la place de celles de FileManager.
Et, en plus, il faut passer
true
àfileManager.createDirectory(at: _, withIntermediateDirectories: _, attributes:_)
Voici du code comme exemple :