2015-10-28 14 views
7

Bir dosya açmaya çalışıyorum ve tepki verilip verilmediğini öğrenmek istiyorum. Ama dosya yok hatasıGolang os.OpenFile dosyası bulunmuyorsa os.ErrNotExist dönmez.

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

döner os.ErrNotExists

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

farklıdır dosya yoksa os.Stat da aynı hata döndürür. El ile yapmak zorunda kalmak yerine karşılaştırılabilir bir hata var mı? Package os

func IsExist

func IsExist(err error) bool 

cevap

11

IsExist hata dosya veya dizin zaten var olduğundan rapora bilindiği olmadığını gösteren bir boole döndürür. Bazı syscall hatalarının yanı sıra ErrExist tarafından karşılanmaktadır.

func IsNotExist

hata dosya ya da dizin var olmadığını rapora bilindiği olmadığını gösteren bir boolean döndüren IsNotExist
func IsNotExist(err error) bool 

. Bazı syscall hatalarının yanı sıra ErrNotExist tarafından karşılanmaktadır.

os.IsNotExist işlevini kullanın. Örneğin,

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) 
    } 
} 

Çıktı:

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

teşekkürler! Tamamen bu dokümanlardaki cevapsız: P –

+0

@ AdriàCasajús Bu cevabı kabul edilen kişi olarak işaretleyebilirsiniz :) – sargas