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, mais je n'arrive pas à trouver un bon moyen de faire ça.

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

mais comment faire à Go?

93
demandé sur Tim Cooper 2012-05-09 10:12:59

5 réponses

// exists returns whether the given file or directory exists or not
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
}

modifié pour ajouter la gestion des erreurs.

152
répondu Mostafa 2015-06-08 09:35:23

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

102
répondu Denys Séguret 2012-05-09 06:23:05

plus D'un FYI, depuis que j'ai regardé autour de moi pendant quelques minutes pensant que ma question serait une recherche rapide loin.

Comment vérifier si le chemin 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 que le 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 paquet path/filepath contienne la fonction isDir ().

14
répondu Edward Wagner 2016-11-16 04:20:33

Simple moyen 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:

2
répondu Nikta Jn 2018-06-28 10:42:09

il y a un moyen simple de vérifier si votre fichier existe ou non:

if _, err := os.Stat("./conf/app.ini"); err != nil {
    if os.IsNotExist(err) {
        ..... //Shows error if file not exists
    } else {
       ..... // Shows success message like file is there
    }
}
-1
répondu Kabeer Shaikh 2018-01-23 03:13:48