Метод os.File.Write
Метод Write выполняет запись данных в файл, представленный структурой os.File. На вход метод принимает срез байтов, который требуется записать. Возвращает количество байтов, которое удалось записать, и ошибку, если она возникла. Важно понимать, что метод записывает данные ровно так, как они передаются, без добавления автоматических разделителей или символов перевода строки.
Синтаксис
func (f *File) Write(b []byte) (n int, err error)
Пример
Давайте откроем или создадим файл и запишем в него простую текстовую строку в виде байтового среза:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("example.txt")
if err != nil {
fmt.Println("Ошибка создания файла:", err)
return
}
defer file.Close()
data := []byte("Hello, Go!")
n, err := file.Write(data)
if err != nil {
fmt.Println("Ошибка записи:", err)
return
}
fmt.Printf("Записано байт: %d\n", n)
}
Результат выполнения кода:
"Записано байт: 10"
Пример
Попробуем выполнить последовательную запись нескольких фрагментов данных в один и тот же файл. По умолчанию запись происходит с начала файла, но можно использовать метод Seek для управления позицией:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.Create("data.txt")
if err != nil {
fmt.Println("Ошибка:", err)
return
}
defer file.Close()
first := []byte("Первая строка\n")
second := []byte("Вторая строка\n")
file.Write(first)
file.Write(second)
fmt.Println("Данные успешно записаны")
}
Результат выполнения кода:
"Данные успешно записаны"
Пример
Рассмотрим случай, когда происходит попытка записи в файл, открытый только для чтения. Метод вернёт ошибку, которую следует обработать:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("readonly.txt", os.O_RDONLY, 0644)
if err != nil {
fmt.Println("Ошибка открытия:", err)
return
}
defer file.Close()
data := []byte("попытка записи")
_, err = file.Write(data)
if err != nil {
fmt.Println("Ошибка записи:", err)
}
}
Результат выполнения кода:
"Ошибка записи: write readonly.txt: bad file descriptor"
Смотрите также
-
метод
os.File.WriteString,
позволяющий записывать строковые данные непосредственно -
функцию
os.Create,
создающую файл для записи -
метод
os.File.Read,
предназначенный для чтения данных из файла -
метод
os.File.Sync,
принудительно сбрасывающий буферы данных на диск