Метод bufio.Writer.Write

Метод bufio.Writer.Write записывает байты в буфер буферизированного писателя. Первым параметром он принимает срез байт ([]byte) для записи. Метод возвращает количество записанных байт и ошибку, если она возникла. Важно помнить, что данные не будут записаны в нижележащий поток, пока не будет вызван метод Flush.

Синтаксис

gofunc (b *bufio.Writer) Write(p []byte) (n int, err error)

Пример

Давайте создадим буферизированный писатель для стандартного вывода и запишем в него строку, преобразованную в байты:

gopackage main

import (
  "bufio"
  "fmt"
  "os"
)

func main() {
  writer := bufio.NewWriter(os.Stdout)
  data := []byte("Hello, World!")
  res, err := writer.Write(data)
  if err != nil {
    fmt.Println("Error:", err)
  }
  fmt.Println("\nBytes written:", res)
  writer.Flush()
}

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

go"Hello, World!"
"Bytes written: 13"

Пример

Теперь давайте запишем несколько фрагментов данных в буфер и затем выведем их все одновременно:

gopackage main

import (
  "bufio"
  "fmt"
  "os"
)

func main() {
  writer := bufio.NewWriter(os.Stdout)
  writer.Write([]byte("First "))
  writer.Write([]byte("Second "))
  writer.Write([]byte("Third"))
  writer.Write([]byte("\n"))
  writer.Flush()
}

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

go"First Second Third"

Пример

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

gopackage main

import (
  "bufio"
  "fmt"
  "os"
)

func main() {
  file, err := os.Create("example.txt")
  if err != nil {
    fmt.Println("Error creating file:", err)
    return
  }
  defer file.Close()

  writer := bufio.NewWriter(file)
  data := []byte("Hello from bufio.Writer")
  res, err := writer.Write(data)
  if err != nil {
    fmt.Println("Error writing:", err)
    return
  }
  writer.Flush()
  fmt.Println("Bytes written to file:", res)
}

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

go"Bytes written to file: 23"

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

  • метод bufio.Writer.WriteString,
    который записывает строку в буферизированный писатель
  • метод bufio.Writer.WriteByte,
    который записывает один байт в буфер
  • метод bufio.Writer.Flush,
    который сбрасывает буфер в нижележащий поток
  • метод bufio.Writer.Available,
    который возвращает количество свободного места в буфере