Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Структура Writer: запись в файл
Пакет bufio
реализует буферизованный ввод/вывод, обертывая объект io.Writer
в объект bufio.Writer
, а объект io.Reader
в объект bufio.Reader
. При использовании пакета не забудьте добавить следующую инструкцию в начало программы:
import "bufio"
Структура bufio.Writer
содержит методы для записи в файл. При этом записанные данные сначала попадают в буфер, а при вызове метода Flush()
данные записываются в файл. Создать объект структуры bufio.Writer
позволяют следующие функции из пакета bufio
:
NewWriter()
— формат функции:
bufio.NewWriter(w io.Writer) *bufio.Writer
Пример записи строки в буфер и сброса буфера в поток os.Stdout
:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.Size()) // 4096
writer.WriteString("Строка\n")
writer.Flush()
NewWriterSize()
— позволяет дополнительно указать размер буфера. Формат функции:
bufio.NewWriterSize(w io.Writer, size int) *bufio.Writer
Пример записи строки в буфер и сброса буфера в файл:
func test() {
file, err := os.Create(`C:\book\test.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
writer := bufio.NewWriterSize(file, 65536)
fmt.Println(writer.Size()) // 65536
if _, err = writer.WriteString("Строка"); err != nil {
fmt.Println(err)
return
}
if err = writer.Flush(); err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Структура bufio.Writer
содержит следующие методы:
Flush()
— сбрасывает содержимое буфера в поток и возвращает объект ошибки или значениеnil
, если операция выполнена успешно. Формат метода:
(*bufio.Writer).Flush() error
WriteString()
— записывает строку в буфер. Формат метода:
(*bufio.Writer).WriteString(s string) (int, error)
Метод возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.WriteString("Строка")) // 12 <nil>
writer.Flush()
Write()
— записывает все содержимое байтового слайса в буфер. Формат метода:
(*bufio.Writer).Write(p []byte) (nn int, err error)
Метод возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.Write([]byte("Строка"))) // 12 <nil>
writer.Flush()
WriteByte()
— добавляет байтc
в буфер. Формат метода:
(*bufio.Writer).WriteByte(c byte) error
Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.WriteByte('t')) // <nil>
writer.Flush()
WriteRune()
— добавляет содержимое символаr
в буфер. Через переменнуюsize
доступно число добавленных байтов. Формат метода:
(*bufio.Writer).WriteRune(r rune) (size int, err error)
Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.WriteRune('б')) // 2 <nil>
writer.Flush()
ReadFrom()
— считывает все содержимое объектаr
и записывает его в поток. Формат метода:
(*bufio.Writer).ReadFrom(r io.Reader) (n int64, err error)
Метод возвращает два значения. Через первое значение доступно число считанных и записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
writer := bufio.NewWriter(os.Stdout)
writer.WriteString("Строка1\n")
buf := bytes.NewBufferString("Строка2")
fmt.Println(writer.ReadFrom(buf)) // 13 <nil>
writer.Flush()
Size()
— возвращает размер буфера в байтах. Формат метода:
(*bufio.Writer).Size() int
Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.Size()) // 4096
Available()
— возвращает размер свободной части буфера в байтах. Формат метода:
(*bufio.Writer).Available() int
Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.Available()) // 4096
writer.WriteString("Строка\n")
fmt.Println(writer.Available()) // 4083
writer.Flush()
Buffered()
— возвращает размер занятой части буфера в байтах. Формат метода:
(*bufio.Writer).Buffered() int
Пример:
writer := bufio.NewWriter(os.Stdout)
fmt.Println(writer.Buffered()) // 0
writer.WriteString("Строка\n")
fmt.Println(writer.Buffered()) // 13
writer.Flush()
Reset()
— удаляет содержимое буфера и заменяет поток вывода наw
. Формат метода:
(*bufio.Writer).Reset(w io.Writer)
Пример:
writer := bufio.NewWriter(os.Stdout)
writer.WriteString("Строка1\n")
writer.Reset(os.Stderr)
writer.WriteString("Строка2\n")
writer.Flush()
Реквизиты
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов