web-dev-qa-db-fra.com

Comment vérifier si un fichier ou un répertoire existe?

Je veux vérifier l'existence du fichier ./conf/app.ini Dans mon code Go, mais je ne peux pas trouver un bon moyen de le faire.

Je sais qu'il existe une méthode de fichier en Java: public boolean exists(), qui renvoie la valeur true si le fichier ou le répertoire existe.

Mais comment cela peut-il être fait dans Go?

112
hardPass
// exists returns whether the given file or directory exists
func exists(path string) (bool, error) {
    _, err := os.Stat(path)
    if err == nil { return true, nil }
    if os.IsNotExist(err) { return false, nil }
    return true, err
}

Édité pour ajouter la gestion des erreurs.

171
Mostafa

Vous pouvez utiliser ceci:

if _, err := os.Stat("./conf/app.ini"); err != nil {
    if os.IsNotExist(err) {
        // file does not exist
    } else {
        // other error
    }
}

Voir: http://golang.org/pkg/os/#IsNotExist

114
Denys Séguret

Plus que des questions d’information, depuis que j’ai regardé autour de moi pendant quelques minutes, pensant que ma question serait une recherche rapide.

Comment vérifier si path représente un répertoire existant dans Go?

C'était 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 trouvé que je pourrais 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 à ce que le package path/filepath Contienne la fonction isDir ().

18
Edward Wagner

Un moyen simple de vérifier si le fichier existe ou non:

if _, err := os.Stat("/path/to/whatever"); os.IsNotExist(err) {
    // path/to/whatever does not exist
}

if _, err := os.Stat("/path/to/whatever"); err == nil {
    // path/to/whatever exists
}

Sources:

10
Nikta Jn