>백엔드 개발 >Golang >Golang에서 디렉토리에 쓸 수 있는지 확인하는 크로스 플랫폼 방법은 무엇입니까?

Golang에서 디렉토리에 쓸 수 있는지 확인하는 크로스 플랫폼 방법은 무엇입니까?

WBOY
WBOY앞으로
2024-02-10 12:51:18674검색

在 Golang 中查看目录是否可写的跨平台方法?

Golang에서는 디렉토리가 크로스 플랫폼 방식으로 쓰기 가능한지 확인하려면 `os.FileMode`를 사용하여 이를 달성할 수 있습니다. 먼저 `os.Stat` 함수를 통해 해당 디렉터리의 파일 정보를 얻습니다. 그런 다음 `file.Mode().Perm()` 메서드를 사용하여 파일 권한을 얻습니다. 마지막으로 `file.Mode().IsDir()` 메서드를 사용하여 디렉터리인지 확인합니다. 디렉토리의 권한이 '0777'이면 쓰기 가능하다는 의미이고, 권한이 '0444' 또는 '0555'이면 읽기 전용임을 의미하고, 권한이 다른 값이면 쓸 수 없음을 의미합니다. . 이 방법은 크로스 플랫폼 디렉터리 쓰기 가능성 검사에 적합합니다.

질문 내용

golang을 사용하여 디렉터리에 파일을 쓰려는 프로그램이 있습니다. Macos, Linux 및 Windows에서 작동하려면 (적어도) 필요합니다.

golang은 다음 테스트를 제공합니다. 하지만 이는 Linux에만 국한된 것 같습니다(아래 링크된 so 질문에서 확인):

으아악

이 답변 [1]을 보았지만 이 질문은 10년이 지났습니다. 조건부 컴파일보다 이를 수행하는 더 좋은 방법이 있습니까?

요약: go 프로세스가 특정 디렉토리에 쓸 수 있는지 확인하고 싶습니다.

[1] 폴더가 존재하고 쓰기 가능한지 어떻게 확인하나요?

해결 방법

운영 체제마다 권한과 권한이 다를 수 있으므로 조건부 컴파일 없이 목표를 달성한 방법입니다.

  • 해당 디렉토리에 임시 파일을 생성하기 위해 os.createtemp를 사용해 보았습니다. 함수가 오류를 반환하지 않으면 경로나 권한에 문제가 없으며 해당 디렉터리에 파일을 만들 수 있습니다.

코드입니다

으아악

위 내용은 Golang에서 디렉토리에 쓸 수 있는지 확인하는 크로스 플랫폼 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제