Go:
Vérifier si un répertoire existe
Comment faire :
En Go, le paquet os
fournit des fonctionnalités pour interagir avec le système d’exploitation, y compris vérifier l’existence d’un répertoire. Voici comment vous pouvez le faire :
package main
import (
"fmt"
"os"
)
// isDirExists vérifie si un répertoire existe
func isDirExists(path string) bool {
info, err := os.Stat(path)
if os.IsNotExist(err) {
return false
}
return info.IsDir()
}
func main() {
dirPath := "/tmp/exampleDir"
if isDirExists(dirPath) {
fmt.Printf("Le répertoire %s existe.\n", dirPath)
} else {
fmt.Printf("Le répertoire %s n'existe pas.\n", dirPath)
}
}
Exemple de sortie :
Le répertoire /tmp/exampleDir existe.
ou
Le répertoire /tmp/exampleDir n'existe pas.
Selon que /tmp/exampleDir
existe ou non.
Approfondissement
La fonction os.Stat
retourne une interface FileInfo
et une erreur. Si l’erreur est de type os.ErrNotExist
, cela signifie que le répertoire n’existe pas. S’il n’y a pas d’erreur, nous vérifions alors si le chemin référence effectivement un répertoire grâce à la méthode IsDir()
de l’interface FileInfo
.
Cette méthode se distingue par sa simplicité et son efficacité, mais il est important de noter que vérifier l’existence d’un répertoire avant d’effectuer des opérations telles que la création ou l’écriture pourrait conduire à des conditions de compétition dans des environnements concurrentiels. Pour de nombreux scénarios, en particulier dans les applications concurrentielles, il pourrait être plus sûr de tenter l’opération (par exemple, la création de fichiers) et de gérer les erreurs par la suite, plutôt que de vérifier au préalable.
Historiquement, cette approche a été courante dans la programmation en raison de sa logique simple. Cependant, l’évolution de l’informatique multi-thread et concurrente nécessite un changement vers une gestion des erreurs plus robuste et d’éviter, autant que possible, les vérifications de préconditions comme celle-ci. Cela ne diminue pas son utilité pour des applications ou des scripts plus simples, mono-thread, où de telles conditions sont moins préoccupantes.