>  기사  >  백엔드 개발  >  Golang은 파일이 존재하는지 읽습니다.

Golang은 파일이 존재하는지 읽습니다.

尚
원래의
2020-03-27 10:32:402697검색

Golang은 파일이 존재하는지 읽습니다.

파일이 존재하는지 확인하는 것은 매우 일반적인 요구 사항이며 golang에서 이 기능을 구현하는 솔루션이 많이 있습니다.

크로스 플랫폼 구현

크로스 플랫폼 구현 아이디어는 매우 간단합니다. 파일이 존재하지 않으면 다음을 사용합니다. os.Lstat는 확실히 오류를 반환합니다. 오류가 파일이 존재하지 않음을 의미하는지 확인하세요.

아마도 일부 코드에서 os.Open을 사용하여 위 작업을 완료하는 것을 보셨을 것입니다. 하지만 이렇게 하지 않는 것이 가장 좋습니다. 두 코드가 완료하는 기능에는 차이가 없지만 호출은 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 중국어 웹사이트 golang tutorial 컬럼을 주목해주세요.

위 내용은 Golang은 파일이 존재하는지 읽습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.