ホームページ  >  記事  >  バックエンド開発  >  Golang はファイルが存在するかどうかを読み取ります

Golang はファイルが存在するかどうかを読み取ります

尚
オリジナル
2020-03-27 10:32:402756ブラウズ

Golang はファイルが存在するかどうかを読み取ります

ファイルが存在するかどうかを判断することは非常に一般的な要件であり、golang でこの機能を実現するためのソリューションは数多くあります。

クロスプラットフォーム実装

クロスプラットフォーム実装の考え方は非常にシンプルで、ファイルが存在しない場合、os.Lstat を使用すると確実に返されます。エラーです。エラーを判断してください。ファイルが存在しないことを意味します。

おそらく、一部のコードが上記の作業を完了するために os.Open を使用していることに気づいたかもしれませんが、これを行わないことをお勧めします。なぜなら、この 2 つによって完了する関数に違いはありませんが、呼び出しのオーバーヘッドが大きくなるからです。 open と stat は異なります。後者は前者よりも小さいため、ファイルが存在するかどうかを判断するには、ファイルを直接開くよりもメタデータを確認する方が合理的です。

次に、実装されたコードを見てみましょう:

func FileExist(path string) bool {
  _, err := os.Lstat(path)  
return !os.IsNotExist(err)
}

POSIX プラットフォームの実装

プログラムが POSIX プラットフォーム (UNIX など) 用の場合、 Linux など) の場合は、より簡単な解決策、syscall.Access があります。

syscall.Access は、ユーザーがファイルのメタ情報を確認する手段を提供します。通常、ファイルのアクセス許可とファイルの存在を確認するために使用されます。

syscall.F_OK フラグを使用してファイルを確認します。ファイルが存在しない場合は、os.Lstat と同じエラーが返されます:

func FileExist(path string) bool {
  err := syscall.Access(path, syscall.F_OK)
  return !os.IsNotExist(err)
}

この実装の最大の利点は、シンプルで直感的ですが、Windows では利用できません。

golang の詳細については、PHP 中国語 Web サイトの golang チュートリアル 列に注目してください。

以上がGolang はファイルが存在するかどうかを読み取りますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。