Подтвердить что ты не робот

Создать io.Reader из локального файла

Я хотел бы открыть локальный файл и вернуть io.Reader. Причина в том, что мне нужно передать io.Reader в библиотеку, которую я использую, например:

func read(r io.Reader) (results []string) {

}
4b9b3361

Ответ 1

os.Open возвращает io.Reader

http://play.golang.org/p/BskGT09kxL

package main

import (
    "fmt"
    "io"
    "os"
)

var _ io.Reader = (*os.File)(nil)

func main() {
    fmt.Println("Hello, playground")
}

Ответ 2

Используйте os.Open():

func Open (строка имени) (файл * Файл, ошибка ошибки)

Открыть открывает файл для чтения. В случае успеха методы возвращаемого файла могут быть используется для чтения; связанный файловый дескриптор имеет режим O_RDONLY. Если есть ошибка, он будет иметь тип * PathError.

Возвращаемое значение типа *os.File реализует интерфейс io.Reader.

Ответ 3

Тип * os.File реализует интерфейс io.Reader, поэтому вы можете вернуть файл как Reader. Но я рекомендую вам использовать пакет bufio, если у вас есть намерения читать большие файлы, что-то вроде этого:

file, err := os.Open("path/file.ext")
// if err != nil { ... }

return bufio.NewReader(file)

Ответ 4

Вот пример, где мы открываем текстовый файл и создаем io.Reader из возвращенного экземпляра * os.File f

package main

import (
    "io"
    "os"
)

func main() {
    f, err := os.Open("somefile.txt")
    if err != nil {
        panic(err)
    }
    defer f.Close()

    var r io.Reader
    r = f
}