Il s'agit plutôt d'une information générale, puisque j'ai cherché pendant quelques minutes en pensant que ma question pouvait faire l'objet d'une recherche rapide.
Comment vérifier si le chemin représente un répertoire existant en Go ?
C'est la réponse la plus populaire dans mes résultats de recherche, mais ici et ailleurs, les solutions ne fournissent qu'un contrôle d'existence. Pour vérifier si path
représente un répertoire existant, j'ai découvert que je pouvais facilement :
path := GetSomePath();
if stat, err := os.Stat(path); err == nil && stat.IsDir() {
// path is a directory
}
Une partie de mon problème était que je m'attendais path/filepath
pour contenir la fonction isDir().
10 votes
Notez également que selon la façon dont vous allez utiliser ces informations, vous avez une condition de course. Tout ce que vous pouvez dire, c'est qu'il y a peu de temps, le fichier existait ou n'existait pas ; au moment où vous effectuez le test, le contraire peut être vrai. En général, il est préférable de vérifier pendant l'opération que vous avez l'intention d'effectuer (par exemple, ne vérifiez pas avant d'ouvrir un fichier existant ou de créer un nouveau fichier, mais vérifiez avant de créer un nouveau fichier).
f, err := os.Open(name)
of, err := os.OpenFile(name,os.O_CREATE|os.O_EXCL, mode)
et ensuite vérifieros.IsNotExist(err)
).