Руководство по работе с текстовыми файлами в Go

Руководство по работе с текстовыми файлами в Go

Как язык программирования, Go имеет широкий спектр встроенных функций, включая возможность создавать, читать и записывать файлы, такие как текстовые (.txt) файлы.





Файлы являются важными компонентами нашей повседневной жизни в современном мире. Текстовые файлы полезны для хранения структурированных удобочитаемых данных без использования внешнего программного обеспечения или баз данных.





СДЕЛАТЬ ВИДЕО ДНЯ

Если вам интересно, как вы могли бы начать манипулировать текстовыми файлами в Go, эта статья — то, что вам нужно.





Пакет bufio в Go

буфий package, являющийся частью стандартной библиотеки Go, используется для операций буферизованного ввода и вывода, отсюда и название. буфий пакет основан на io.Reader а также io.Писатель интерфейсы, которые широко используются в реализации большинства стандартных пакетов Go.

буфий package делает еще один шаг вперед, реализуя буферизацию, что делает его полезным для операций ввода-вывода с текстовыми данными.



Чтобы использовать буфий package в вашей программе, вы должны импортировать его вместе с другими пакетами.

25Д2Б04ДА8ДК0057Э8К5301ББ491А78А842565А5

Вы, наверное, слышали, когда вы начал с Go что он поставляется со всем, что вам может понадобиться как программисту. Для прямой связи с вашей операционной системой существует пакет под названием ты который предоставляет независимые от платформы функции.





ты а также буфий пакеты делают работу с текстовыми файлами невероятно простой.

Хотя подавляющее большинство ты Функции пакета похожи на Unix, все они используют стиль Go для обработки ошибок, что упрощает чтение сообщений об ошибках и отладку кода.





Итак, как вы манипулируете файлами, содержащими текст в Go?

Как читать данные из текстового файла

Для чтения данных из текстовых файлов необходимо вызвать метод ты пакет Открытым() функция, которая принимает имя файла для чтения в качестве параметра. Другой способ получить файл — использовать Открыть файл() функция.

Основное различие между Открытым() а также Открыть файл() находится в их реализации. Открытым() открывает файл в режиме только для чтения (с O_RDONLY флаг), а Открыть файл() дает больше гибкости, принимая три параметра, а именно:

посмотреть, кто не подписан на вас в инстаграмм
  • Имя файла
  • Режим открытия файла: Допустимые режимы открытия файла показаны в таблице ниже.
    Флаг Значение
    O_RDONLY Открывает файл в режиме только для чтения
    O_WRONLY Открывает файл в режиме только для записи
    O_RDWR Открывает файл в режиме чтения-записи.
    O_APPEND Добавляет данные в файл при записи
    O_CREATE Создает новый файл, если его не существует
    O_EXCL Используется с O_CREATE, чтобы указать, что файл должен быть создан только в том случае, если он не существует.
    O_SYNC Открывает файл для синхронного ввода/вывода
    O_TRUNC Обрезать файл при открытии, если это возможно
  • Права доступа к файлам: такие же, как биты прав доступа к файлам в Linux используется для указания правил доступа к файлам, например, 0777 для предоставления прав на чтение, запись и выполнение всем типам пользователей.

В приведенном ниже коде показано, как читать данные из текстового файла в Go, используя ОС.Открыть() , а также Сканировать() который в данном случае работает в Перейти на петлю .

package main 
import (
"bufio"
"fmt"
"log"
"os"
)
/**
CONTENT OF THE "testfile.txt" file.
lorem ipsum dolor sit amet
LOREM IPSUM DOLOR SIT AMET
Lorem ipsum dolor sit amet
Lorem Ipsum Dolor Sit Amet
lOREM iPSUM dOLOR sIT aMET
LoReM IpSuM DoLoR SiT AmEt
*/
func main() {
file, err := os.Open("testfile.txt")
// another method using os.OpenFile()
// file, err = os.OpenFile("testfile.txt", os.O_RDONLY, 0644)
if err != nil {
log.Fatal(err)
}
defer file.()
fmt.Println("File opened successfully. Now reading file contents line by line:")
// create scanner from the file to read text from
scanner := bufio.NewScanner(file)
// scan or read the bytes of text line by line
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}

Когда вы запускаете код выше с беги, имя_файла.go , он производит вывод, показанный ниже:

  Вывод программы для чтения текста из файла