2015-10-28 4 views
7

Sto provando ad aprire un file e mi piacerebbe sapere se non esiste una reazione. Ma l'erroreIn golang os.OpenFile non restituisce os.ErrNotExist se il file non esiste

os.OpenFile(fName, os.O_WRONLY, 0600) 

ritorna quando il file non esiste è diverso os.ErrNotExists

os.ErrNotExists -> "file does not exist" 
err.(*os.PathError).Err -> "no such file or directory" 

os.stat anche restituire lo stesso errore se il file non c'è. C'è un errore predefinito che posso confrontare invece di doverlo fare a mano?

risposta

11

Package os

func IsExist

func IsExist(err error) bool 

IsExist restituisce un valore booleano che indica se l'errore è conosciuto per rapporto che un file o una directory esiste già. È soddisfatto da ErrExist e da alcuni errori di syscall.

func IsNotExist

func IsNotExist(err error) bool 

IsNotExist ritorna un valore booleano che indica se l'errore è conosciuto per rapporto che un file o una directory non esiste. È soddisfatto da ErrNotExist e da alcuni errori syscall.

Utilizzare la funzione os.IsNotExist. Ad esempio,

package main 

import (
    "fmt" 
    "os" 
) 

func main() { 
    fname := "No File" 
    _, err := os.OpenFile(fname, os.O_WRONLY, 0600) 
    if err != nil { 
     if os.IsNotExist(err) { 
      fmt.Print("File Does Not Exist: ") 
     } 
     fmt.Println(err) 
    } 
} 

uscita:

File Does Not Exist: open No File: No such file or directory 
+0

Grazie! Completamente mancato nei documenti: P –

+0

@ AdriàCasajús È possibile contrassegnare questa risposta come accettata :) – sargas