Un ghid pentru lucrul cu fișierele text în Go

Un ghid pentru lucrul cu fișierele text în Go

Ca limbaj de programare, Go are o gamă largă de funcții încorporate, inclusiv capacitatea de a crea, citi și scrie fișiere precum fișiere text (.txt).





Fișierele sunt componente importante ale vieții noastre de zi cu zi în lumea modernă. Fișierele text sunt utile pentru stocarea datelor structurate care pot fi citite de om, fără a utiliza software sau baze de date externe.





REALIZAREA VIDEOCLIPULUI ZILEI

Dacă vă întrebați cum ați putea începe să manipulați fișierele text în Go, acest articol este locul potrivit pentru dvs.





Pachetul bufio din Go

The bufio pachetul, care face parte din biblioteca standard Go, este folosit pentru operațiunile de intrare și ieșire tamponate, de unde și numele. The bufio pachetul se bazează pe io.Cititor și io.Scriitor interfețe, care sunt utilizate pe scară largă în implementarea majorității pachetelor standard Go.

The bufio pachetul merge cu un pas mai departe prin implementarea tamponării, făcându-l util pentru operațiunile IO care implică date textuale.



Pentru a utiliza bufio pachet din programul dvs., ar trebui să îl importați împreună cu alte pachete.

import ( 
"fmt"
"bufio"
)

Probabil ai auzit când ai am început cu Go că vine cu tot ce ai putea avea nevoie ca programator. Pentru comunicarea directă cu sistemul dvs. de operare, există un pachet numit tu care oferă funcții independente de platformă.





cum să faci jocurile să ruleze mai bine pe laptop

The tu și bufio pachetele fac manipularea fișierelor text incredibil de simplă.

Deși marea majoritate a tu Funcțiile pachetului sunt asemănătoare Unix, toate folosesc stilul Go de gestionare a erorilor, ceea ce face simplă citirea mesajelor de eroare și codul de depanare.





Deci, cum manipulezi fișierele care conțin text în Go?

Cum să citiți datele dintr-un fișier text

Pentru a citi date din fișierele text, trebuie să apelați tu pachetelor Deschis() funcția, care acceptă numele fișierului care urmează să fie citit ca parametru. O altă metodă de a obține fișierul este utilizarea fișierului Deschide fișierul() funcţie.

Diferența majoră între Deschis() și Deschide fișierul() este în implementarea lor. Deschis() deschide un fișier în modul doar citire (cu O_RDONLY steag), în timp ce Deschide fișierul() oferă mai multă flexibilitate prin acceptarea a trei parametri și anume:

  • Nume de fișier
  • Modul de deschidere a fișierului: modurile de deschidere a fișierelor valide sunt afișate în tabelul de mai jos.
    Steag Sens
    O_RDONLY Deschide fișierul în modul numai citire
    O_NEGRESIT Deschide fișierul în modul numai de scriere
    O_RDWR Deschide fișierul în modul citire-scriere
    O_APPEND Adaugă date la fișier în timpul scrierii
    O_CREATE Creează un fișier nou dacă nu există
    O_EXCL Folosit cu O_CREATE, pentru a indica faptul că fișierul ar trebui creat numai dacă nu există
    O_SYNC Deschide fișierul pentru I/O sincron
    O_TRUNC Trunchiați fișierul la deschidere, dacă este posibil
  • Permisiuni pentru fișiere: La fel ca biți de permisiuni pentru fișiere în Linux folosit pentru specificarea regulilor de acces la fișiere, de exemplu, 0777 pentru a acorda permisiuni de citire, scriere și executare tuturor tipurilor de utilizatori.

Codul de mai jos arată cum să citiți datele dintr-un fișier text în Go folosind os.Open() , și Scanează() care, în acest caz, rulează în a Mergi pentru buclă .

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

Când rulați codul de mai sus cu mergeți să rulați filename.go , produce rezultatul prezentat mai jos:

sincronizarea controlerului Xbox One la consolă
  Ieșirea programului pentru a citi textul din fișier