В прошлом уроке мы рассмотрели процесс чтения из Stdin и открытие файла. В данной инструкции мы совместим два урока и покажем, как открыть файл для чтения и вывести содержимое файла на экран в терминале.
Как прочитать содержимое файла и вывести его в терминал Go?
1. Создайте директорию temp
и создайте внутри файл file.txt
;
2. Отредактируйте файл file.txt
и запишите внутри несколько строчек текста;
3. Создайте файл readfile.go
со следующим содержимым:
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package main import "os" import "bufio" import "bytes" import "fmt" import "io/ioutil" func main() { fmt.Println("### Read as reader ###") f, err := os.Open("temp/file.txt") if err != nil { panic(err) } defer f.Close() // Чтение файла с ридером wr := bytes.Buffer{} sc := bufio.NewScanner(f) for sc.Scan() { wr.WriteString(sc.Text()) } fmt.Println(wr.String()) fmt.Println("### ReadFile ###") // для более мелких файлов fContent, err := ioutil.ReadFile("temp/file.txt") if err != nil { panic(err) } fmt.Println(string(fContent)) } |
4. Запустите код через go run readfile.go
;
5. Посмотрите на вывод:
Интерфейсы Reader и Writer для чтения и записи в файл
Чтение из файла становится простым из-за того, что тип File
имплементирует интерфейсы Reader
и Writer
. В таком случае все функции и подходы можно применить к интерфейсу Reader
и типу File
. В предыдущем примере показано, как читать файл с использованием Scanner и записывать содержимое в байты буфера (что требует больше действий, чем конкатенация строк). В таком случае вы сможете управлять чтением содержимого из файла.
Второй пример с ioutil.ReadFile
проще, но его нужно использовать осторожно, потому что он читает весь файл. Имейте в виду, что файл может быть огромным, что может быть угрозой для стабильной работы приложения.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»