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

Тип os.File

Тип os.File представляет собой файловый дескриптор для открытого файла. Он используется для выполнения всех операций ввода-вывода с файлами: чтения, записи, позиционирования, синхронизации и получения информации о файле. Объект типа os.File возвращается такими функциями, как os.Open, os.Create, os.OpenFile. После завершения работы с файлом его необходимо закрывать с помощью метода Close, чтобы освободить системные ресурсы.

Создание файла и запись данных

Для создания файла используется функция os.Create, которая возвращает указатель на тип os.File. Давайте создадим файл и запишем в него строку:

package main import ( "fmt" "os" ) func main() { file, err := os.Create("example.txt") if err != nil { fmt.Println("Error creating file:", err) return } defer file.Close() n, err := file.WriteString("Hello, World!") if err != nil { fmt.Println("Error writing to file:", err) return } fmt.Printf("Written %d bytes to file\n", n) }

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

"Written 13 bytes to file"

Чтение данных из файла

Для чтения данных из файла используется метод Read, который считывает данные в байтовый слайс. Давайте откроем существующий файл и прочитаем его содержимое:

package main import ( "fmt" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() buffer := make([]byte, 1024) n, err := file.Read(buffer) if err != nil { fmt.Println("Error reading from file:", err) return } fmt.Printf("Read %d bytes: %s\n", n, string(buffer[:n])) }

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

"Read 13 bytes: Hello, World!"

Получение информации о файле

Метод Stat возвращает информацию о файле, включая его размер, права доступа и время модификации. Давайте получим информацию о файле:

package main import ( "fmt" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() info, err := file.Stat() if err != nil { fmt.Println("Error getting file info:", err) return } fmt.Printf("File name: %s\n", info.Name()) fmt.Printf("File size: %d bytes\n", info.Size()) fmt.Printf("Is directory: %t\n", info.IsDir()) fmt.Printf("Permissions: %s\n", info.Mode()) }

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

"File name: example.txt" "File size: 13 bytes" "Is directory: false" "Permissions: -rw-r--r--"

Позиционирование в файле

Метод Seek позволяет перемещать текущую позицию в файле. Это полезно для чтения и записи с определенного места. Давайте прочитаем данные начиная с пятого символа:

package main import ( "fmt" "os" ) func main() { file, err := os.Open("example.txt") if err != nil { fmt.Println("Error opening file:", err) return } defer file.Close() // Перемещаем указатель на 5 байт от начала файла _, err = file.Seek(5, 0) if err != nil { fmt.Println("Error seeking in file:", err) return } buffer := make([]byte, 1024) n, err := file.Read(buffer) if err != nil { fmt.Println("Error reading from file:", err) return } fmt.Printf("Read from position 5: %s\n", string(buffer[:n])) }

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

"Read from position 5: , World!"

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

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