РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
612 of 1593 menu

Ошибка fs.ErrInvalid

Ошибка fs.ErrInvalid возвращается операциями пакета io/fs, когда переданный аргумент не соответствует требованиям файловой системы. Например, путь содержит недопустимые символы, или режим открытия файла указан некорректно. Эта ошибка является частью набора стандартных ошибок пакета fs и используется для единообразной обработки ситуаций с невалидными параметрами.

Синтаксис

Ошибка fs.ErrInvalid определена как переменная в пакете io/fs:

var ErrInvalid = errors.New("invalid argument")

Для проверки наличия данной ошибки используйте сравнение с fs.ErrInvalid или функцию errors.Is, так как она может быть обернута в другие ошибки.

Пример

Попробуем открыть файл с некорректным режимом (флаги не являются допустимой комбинацией):

package main import ( "errors" "fmt" "io/fs" "os" ) func main() { // Некорректный режим: комбинация O_CREATE и O_TRUNC без O_RDWR // намеренно неверна для данной ОС file, err := os.OpenFile("test.txt", os.O_CREATE|os.O_TRUNC, 0644) if err != nil { if errors.Is(err, fs.ErrInvalid) { fmt.Println("Ошибка: недопустимый аргумент") } else { fmt.Println("Другая ошибка:", err) } return } defer file.Close() fmt.Println("Файл открыт успешно") }

Результат выполнения кода (на некоторых системах):

"Ошибка: недопустимый аргумент"

Пример

Попробуем прочитать директорию, передав файл с недопустимым именем (путь содержит нулевой символ):

package main import ( "errors" "fmt" "io/fs" "os" ) func main() { // Имя файла с недопустимым символом (null byte) invalidPath := "test\x00.txt" _, err := os.ReadDir(invalidPath) if err != nil { if errors.Is(err, fs.ErrInvalid) { fmt.Println("Ошибка: путь содержит недопустимые символы") } else { fmt.Println("Другая ошибка:", err) } return } fmt.Println("Директория прочитана успешно") }

Результат выполнения кода:

"Ошибка: путь содержит недопустимые символы"

Пример

Попробуем создать файл с именем, которое превышает максимальную длину (для некоторых файловых систем это также может вызвать fs.ErrInvalid):

package main import ( "errors" "fmt" "io/fs" "os" "strings" ) func main() { // Создаем очень длинное имя файла (255 символов) longName := strings.Repeat("a", 300) + ".txt" _, err := os.Create(longName) if err != nil { if errors.Is(err, fs.ErrInvalid) { fmt.Println("Ошибка: недопустимое имя файла") } else if os.IsNotExist(err) { fmt.Println("Ошибка: файл не существует") } else if os.IsPermission(err) { fmt.Println("Ошибка: недостаточно прав") } else { fmt.Println("Другая ошибка:", err) } return } fmt.Println("Файл создан успешно") }

Результат выполнения кода (зависит от ОС):

"Ошибка: недопустимое имя файла"

Смотрите также

  • ошибку fs.ErrNotExist,
    которая возникает, когда файл или директория не найдены
  • ошибку fs.ErrPermission,
    которая сигнализирует о недостатке прав доступа
  • ошибку fs.ErrExist,
    которая возвращается при попытке создать уже существующий файл
  • тип fs.PathError,
    который содержит детальную информацию об ошибке пути
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить