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

Интерфейс fs.File

Интерфейс fs.File представляет собой файл в виртуальной файловой системе. Он определяет методы для чтения данных, закрытия файла и получения информации о файле. В первый параметр методы принимают срез байтов для чтения данных, во второй параметр могут принимать смещение для позиционирования. Интерфейс fs.File используется в функциях пакета fs для работы с файлами через абстракцию файловой системы.

Интерфейс fs.File включает методы Read, Close, Stat и другие. Метод Read читает данные из файла в предоставленный срез байтов и возвращает количество прочитанных байтов и ошибку. Метод Close закрывает файл и освобождает связанные с ним ресурсы. Метод Stat возвращает информацию о файле, такую как размер и время изменения.

Синтаксис

type File interface { Read([]byte) (int, error) Close() error Stat() (FileInfo, error) }

Пример

Давайте откроем файл с помощью функции fs.ReadFile и прочитаем его содержимое:

package main import ( "fmt" "io/fs" "os" ) func main() { data, err := fs.ReadFile(os.DirFS("."), "example.txt") if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(data)) }

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

"Hello, World!"

Пример

Давайте используем метод Read для чтения данных из файла в буфер:

package main import ( "fmt" "io/fs" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println("Error:", err) return } defer file.Close() buf := make([]byte, 100) n, err := file.Read(buf) if err != nil { fmt.Println("Error:", err) return } fmt.Println(string(buf[:n])) }

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

"Hello, World!"

Пример

Давайте получим информацию о файле с помощью метода Stat:

package main import ( "fmt" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println("Error:", err) return } defer file.Close() info, err := file.Stat() if err != nil { fmt.Println("Error:", err) return } fmt.Println("File size:", info.Size()) fmt.Println("Is directory:", info.IsDir()) fmt.Println("Permission:", info.Mode()) }

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

"File size: 13" "Is directory: false" "Permission: -rw-r--r--"

Пример

Давайте используем интерфейс fs.File с виртуальной файловой системой для чтения встроенных файлов:

package main import ( "embed" "fmt" "io/fs" ) //go:embed example.txt var embeddedFiles embed.FS func main() { file, err := embeddedFiles.Open("example.txt") if err != nil { fmt.Println("Error:", err) return } defer file.Close() stat, err := file.Stat() if err != nil { fmt.Println("Error:", err) return } fmt.Println("File name:", stat.Name()) fmt.Println("File size:", stat.Size()) }

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

"File name: example.txt" "File size: 13"

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

  • интерфейс fs.FS,
    который представляет виртуальную файловую систему
  • функцию os.Open,
    которая открывает файл по указанному пути
  • функцию fs.ReadFile,
    которая читает все содержимое файла
  • интерфейс os.FileInfo,
    который содержит информацию о файле
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить