воскресенье, 19 июля 2020 г.

Пакет ioutil в Golang, функции чтения

Функция ReadAll

func ReadAll(r io.Reader) ([]byte, error)

ReadAll читает из r до ошибки или EOF и возвращает прочитанные данные. Успешный вызов возвращает err == nil, а не err == EOF. Поскольку ReadAll определен для чтения из src до EOF, он не рассматривает EOF из Read как ошибку, о которой будет сообщено.

package main

import (
    "fmt"
    "io/ioutil"
    "log"
    "strings"
)

func main() {
    r := strings.NewReader("ReadAll принимает io.Reader и возвращает []byte")

    b, err := ioutil.ReadAll(r)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("%s", b)

}

Вывод:

ReadAll принимает io.Reader и возвращает []byte

Функция ReadDir

func ReadDir(dirname string) ([]os.FileInfo, error)

ReadDir читает каталог с именем dirname и возвращает список записей каталога, отсортированных по имени файла.

package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    files, err := ioutil.ReadDir(".")
    if err != nil {
        log.Fatal(err)
    }

    for _, file := range files {
        fmt.Println(file.Name())
    }
}

Вывод (зависит от окружения):

.dockerenv
__runsc_containers__
bin
dev
etc
home
lib
lib64
proc
root
sys
tmp
tmpfs
usr
var

Функция ReadFile

func ReadFile(filename string) ([]byte, error)

ReadFile читает файл с именем filename и возвращает его содержимое. Успешный вызов возвращает err == nil, а не err == EOF. Поскольку ReadFile читает весь файл, он не рассматривает EOF из Read как ошибку, о которой будет сообщено.

package main

import (
    "fmt"
    "io/ioutil"
    "log"
)

func main() {
    content, err := ioutil.ReadFile("testdata/hello")
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("File contents: %s", content)

}

Вывод:

File contents: Hello world


Читайте также:


Комментариев нет:

Отправить комментарий