51 votes

Golang Déterminer si *File pointe vers un fichier ou un répertoire

Existe-t-il un moyen de déterminer si mon *Fichier pointe vers un fichier ou un répertoire ?

Je veux pouvoir lire les statistiques sur le fichier s’il ne s’agit que d’un fichier, et être capable de lire les fichiers dans le répertoire s’il s’agit d’un répertoire

80voto

peterSO Points 25725

Par exemple

Note:

L’exemple est pour Go 1.1. Pour Go 1.0, remplacez par ```` .

40voto

user2229691 Points 61

Voici une autre possibilité :

17voto

tst Points 171

Voici comment faire le test en une ligne:

1voto

farhany Points 177
import "os"

// FileExists reports whether the named file exists as a boolean
func FileExists(name string) bool {
    if fi, err := os.Stat(name); err == nil {
        if fi.Mode().IsRegular() {
            return true
        }
    }
    return false
}

// DirExists reports whether the dir exists as a boolean
func DirExists(name string) bool {
    if fi, err := os.Stat(name); err == nil {
        if fi.Mode().IsDir() {
            return true
        }
    }
    return false
}

1voto

scudette Points 11
<pre><code></code><p>Veillez à ne pas ouvrir et noter le fichier par son nom. Cela produira une condition de race avec des implications potentielles sur la sécurité.</p><p>Si votre ouverture réussit, vous avez un descripteur de fichier valide et vous devez utiliser la méthode Stat() pour obtenir la stat. La réponse principale est risquée car ils suggèrent d’appeler os. Stat() d’abord, puis vraisemblablement os. Open() mais quelqu’un pourrait modifier le fichier entre les deux appels.</p></pre>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X