Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Запись в файл
Для записи в файл предназначены следующие методы структуры File
:
WriteString()
— записывает строку в файл. Формат метода:
(*os.File).WriteString(s string) (n int, err error)
Метод возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
file, err := os.Create(`C:\book\file.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
if _, err = file.WriteString("Строка1"); err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Write()
— записывает все содержимое байтового слайса в файл. Формат метода:
(*os.File).Write(b []byte) (n int, err error)
Метод возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
file, err := os.Create(`C:\book\file.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
if _, err = file.Write([]byte("Строка2")); err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
WriteAt()
— записывает все содержимое байтового слайса в файл, начиная с позицииoff
. Формат метода:
(*os.File).WriteAt(b []byte, off int64) (n int, err error)
Метод возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
mode := os.O_WRONLY | os.O_CREATE
file, err := os.OpenFile(`C:\book\file.txt`, mode, 0o777)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
if _, err = file.WriteAt([]byte("Строка3"), 8); err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
ReadFrom()
— считывает все содержимое объектаr
и записывает его в файл. Формат метода:
(*os.File).ReadFrom(r io.Reader) (n int64, err error)
Интерфейс io.Reader
содержит объявление одного метода:
type Reader interface {
Read(p []byte) (n int, err error)
}
Метод возвращает два значения. Через первое значение доступно число считанных и записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
file, err := os.Create(`C:\book\file.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
buf := bytes.NewBufferString("Строка1\nСтрока2")
if _, err := file.ReadFrom(buf); err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Структура File
реализует интерфейс io.Writer
:
type Writer interface {
Write(p []byte) (n int, err error)
}
Благодаря этому для записи в файл мы можем использовать функции из пакета fmt
:
Fprintln()
— записывает данные в поток, реализующий интерфейсio.Writer
. Между данными вставляется пробел, а в конец вставляется символ перевода строки. Формат функции:
fmt.Fprintln(w io.Writer, a ...interface{}) (n int, err error)
Функция возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
file, err := os.Create(`C:\book\file.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
_, err = fmt.Fprintln(file, true, 10, 14.5, "строка")
// true 10 14.5 строка\n
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Fprint()
— записывает данные в поток, реализующий интерфейсio.Writer
. В отличие от функцииFprintln()
функцияFprint()
не всегда добавляет пробел между данными. Если с одной из сторон находится строка, то пробел не добавляется. Символ перевода строки в конец не добавляется. Формат функции:
fmt.Fprint(w io.Writer, a ...interface{}) (n int, err error)
Функция возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
file, err := os.Create(`C:\book\file.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
_, err = fmt.Fprint(file, true, 10, 14.5, "строка")
// true 10 14.5строка
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Fprintf()
— записывает данные в поток, реализующий интерфейсio.Writer
, в соответствии со строкой формата. Внутри строки формата можно указать обычные символы и спецификаторы формата, начинающиеся с символа%
(см. описание функцииPrintf()
в разд. 1.9). Количество спецификаторов должно совпадать с количеством переданных параметров. Формат функции:
fmt.Fprintf(w io.Writer, format string,
a ...interface{}) (n int, err error)
Функция возвращает два значения. Через первое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
file, err := os.Create(`C:\book\file.txt`)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
_, err = fmt.Fprintf(file, "%v %d %s", true, 10, "строка")
// true 10 строка
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Для записи в файл можно также воспользоваться функцией WriteFile()
из пакета os
. Формат функции:
os.WriteFile(name string, data []byte, perm fs.FileMode) error
В первом параметре указывается абсолютный или относительный путь к файлу, а во втором — байтовый слайс, содержимое которого будет записано в файл. Если файл не существует, то он будет создан с правами perm
. Если файл существует, то он будет перезаписан. Функция возвращает объект ошибки или nil
, если операция выполнена успешно. Пример:
func test() {
b := []byte("Строка1\nСтрока2")
err := os.WriteFile(`C:\book\file.txt`, b, 0o777)
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Операция выполнена успешно")
}
Для записи строки в файл можно использовать функцию WriteString()
из пакета io
. Формат функции:
io.WriteString(w io.Writer, s string) (n int, err error)
Через первое возвращаемое значение доступно число записанных байтов. Через второе значение доступен объект ошибки или значение nil
, если операция выполнена успешно. Пример:
n, err := io.WriteString(os.Stdout, "Строка\n")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("n =", n) // 13
Реквизиты
ЮMoney (Yandex-деньги): 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов