2015-10-28 35 views
7

ファイルを開こうとしていますが、反応するファイルが存在しないかどうかを知りたいと思います。しかし、エラーgolang os.OpenFileは、ファイルが存在しない場合はos.ErrNotExistを返しません。

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

戻ったファイルが存在しないos.ErrNotExists

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

ファイルが存在しない場合はos.statも同じエラーを返すとは異なります。手作業で行うのではなく、私が比較できる定義済みのエラーはありますか?

答えて

11

Package os

func IsExist

func IsExist(err error) bool 

IsExistエラーは、ファイルまたはディレクトリがすでに存在していること レポートにはよく知られているかどうかを示すブール値を返します。それは ErrExistといくつかのシステムエラーによって満足されます。エラーは、ファイルまたはディレクトリが存在しないこと レポートにはよく知られているかどうかを示すブール値を返しIsNotExist

func IsNotExist

func IsNotExist(err error) bool 

。これは、 ErrNotExistといくつかのシステムエラーで満たされます。

os.IsNotExist機能を使用してください。例えば、

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

出力:

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

ありがとう!完全にドキュメントでそれを逃した:P –

+0

@AdriàCasajúsあなたはこの回答を受け入れられたものとしてマークすることができます:) – sargas

関連する問題