filmov
tv
Уроки Golang с нуля /#27 - Bufio. Чтение и запись
Показать описание
Package bufio предоставляет буферизованные реализации Reader и Writer. Они предоставляют дополнительные методы, добавляющие возможность буферизации к обычным операциям чтения и записи.
Основной тип в пакете bufio - это bufio.Reader, который обертывается вокруг других io.Reader и предоставляет методы для буферизованного чтения данных. Он поддерживает чтение байтов, чтение строк и чтение из буфера до определенного разделителя. Методы Read и ReadString используют внутренний буфер для считывания данных из источника, что делает операции чтения более эффективными по сравнению с непосредственным чтением из источника каждый раз.
Пример использования bufio.Reader:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
reader := bufio.NewReader(file)
for {
line, err := reader.ReadString('\n')
if err != nil {
fmt.Println("Error reading file:", err)
return
}
fmt.Print(line)
}
}
Пакет bufio также предоставляет bufio.Writer, который предоставляет методы для буферизованной записи данных в io.Writer. Это позволяет уменьшить количество операций записи и повысить эффективность.
Пример использования bufio.Writer:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()
writer := bufio.NewWriter(file)
writer.WriteString("Hello, World!\n")
writer.WriteString("This is a test.")
writer.Flush()
}
Использование bufio.Reader и bufio.Writer может улучшить производительность операций чтения и записи ввода-вывода, особенно при работе с большими объемами данных.
Комментарии