Ръководство за работа с текстови файлове в Go

Ръководство за работа с текстови файлове в Go

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





каква е разликата между facebook и facebook lite

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





MAKEUSEOF ВИДЕО НА ДЕНЯ

Ако се чудите как бихте могли да започнете да манипулирате текстови файлове в Go, тази статия е правилното място за вас.





Пакетът bufio в Go

The буфио пакетът, който е част от стандартната библиотека на Go, се използва за буферирани входни и изходни операции, откъдето идва и името. The буфио пакетът се основава на io.Reader и io.Писател интерфейси, които се използват широко при внедряването на повечето стандартни пакети на Go.

The буфио пакетът отива една крачка напред чрез прилагане на буфериране, което го прави полезен за IO операции, включващи текстови данни.



За да използвате буфио пакет във вашата програма, трябва да го импортирате заедно с други пакети.

как да свържете Bluetooth слушалки към xbox one
import ( 
"fmt"
"bufio"
)

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





The ти и буфио пакетите правят манипулирането на текстови файлове невероятно лесно.

Въпреки че по-голямата част от ти функциите на пакета са подобни на Unix, всички те използват стила Go за обработка на грешки, което улеснява четенето на съобщения за грешка и кода за отстраняване на грешки.





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

Как да четем данни от текстов файл

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

как да разберете дали плазменият ви телевизор изгаря

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

  • Име на файл
  • Режим на отваряне на файл: Валидните режими на отваряне на файл са показани в таблицата по-долу.
    Флаг Значение
    O_RDONLY Отваря файла в режим само за четене
    O_ГРЕШНО Отваря файла в режим само за запис
    O_RDWR Отваря файла в режим на четене и запис
    O_APPEND Добавя данни към файла при запис
    O_CREATE Създава нов файл, ако не съществува такъв
    O_EXCL Използва се с O_CREATE, за да посочи, че файлът трябва да бъде създаден само ако не съществува
    O_SYNC Отваря файл за синхронен I/O
    O_TRUNC Съкратете файла при отваряне, ако е възможно
  • Разрешения за файлове: Същите като битове за разрешение за файл в Linux използвани за определяне на правила за достъп до файлове, например 0777 за предоставяне на разрешения за четене, запис и изпълнение на всички потребителски типове.

Кодът по-долу показва как да четете данни от текстов файл в Go с помощта на os.Open() , и сканиране() който в този случай работи в a Отидете за цикъл .

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)
}
}

Когато стартирате горния код с стартирайте filename.go , той произвежда резултата, показан по-долу:

  Изход на програма за четене на текст от файл