Функция os.IsPermission
Функция os.IsPermission проверяет, является ли переданная ошибка
ошибкой доступа (permission denied). Она возвращает true,
если ошибка сигнализирует о том, что у программы недостаточно прав
для выполнения операции с файлом или директорией. В противном случае
возвращается false. Функция принимает один параметр -
ошибку error, которую вернула одна из функций пакета os
при работе с файловой системой.
Синтаксис
os.IsPermission(err)
Пример
Попробуем открыть файл для записи, на который у нас нет прав,
и проверить ошибку с помощью os.IsPermission:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("/root/secret.txt", os.O_WRONLY, 0644)
if err != nil {
if os.IsPermission(err) {
fmt.Println("Permission denied")
} else {
fmt.Println("Other error:", err)
}
return
}
defer file.Close()
fmt.Println("File opened successfully")
}
Результат выполнения кода:
"Permission denied"
Пример
Проверим ошибку, возникшую при попытке записи в файл в директории только для чтения:
package main
import (
"fmt"
"os"
)
func main() {
err := os.WriteFile("/readonly-dir/file.txt", []byte("data"), 0644)
if err != nil {
if os.IsPermission(err) {
fmt.Println("Write operation failed due to permission")
} else {
fmt.Println("Other error:", err)
}
} else {
fmt.Println("File written successfully")
}
}
Результат выполнения кода:
"Write operation failed due to permission"
Пример
Функция os.IsPermission возвращает false,
если ошибка не связана с правами доступа, например,
при попытке открыть несуществующий файл:
package main
import (
"fmt"
"os"
)
func main() {
_, err := os.Open("nonexistent.txt")
if err != nil {
if os.IsPermission(err) {
fmt.Println("Permission error")
} else {
fmt.Println("Other error:", err)
}
}
}
Результат выполнения кода:
"Other error: open nonexistent.txt: no such file or directory"
Смотрите также
-
функцию
os.IsNotExist,
которая проверяет, существует ли файл или директория -
функцию
os.IsExist,
которая проверяет, существует ли файл или директория -
функцию
os.IsTimeout,
которая проверяет, истекло ли время ожидания операции -
функцию
os.Stat,
которая возвращает информацию о файле или директории