Przeczytaj plik

Przeczytaj plik
Możliwość odczytu plików jest elementem konstrukcyjnym dla każdego nietrywialnego programu. Stąd każdy programista musi nauczyć się czytać pliki.

Będziesz miał podstawowe umiejętności czytania treści plików za pomocą języka programowania Go do końca tego artykułu.

Otwórz plik do odczytu

Pierwszą metodą podczas czytania dowolnego pliku jest otwieranie go. Aby otworzyć plik w Go, możemy użyć metod Open () lub OpenFile () z pakietu systemu operacyjnego.

Dla uproszczenia trzymamy się metody Open ().

Poniższy kod pokazuje składnię do otwarcia pliku za pomocą pakietu systemu operacyjnego:

Plik, err: = OS.Otwarte („nazwa pliku”)

Na przykład, aby otworzyć plik o nazwie „Hello.TXT ”W bieżącym katalogu roboczym możemy zrobić:

Plik, err: = OS.Otwarte ("Witam.tekst")

Dobrze jest również zamknąć plik po wypełnieniu wymaganych operacji. Możemy zamknąć plik za pomocą metody zamknięcia jako:

plik odroczenia.Zamknąć()

Upewnij się, że każda operacja wykonujesz w pliku, znajduje się w metodzie Open () i Close ().

Plik odczytu Golang.

Możemy użyć różnych metod i technik do odczytania pliku w Go. Omówmy niektóre wspólne i najbardziej wydajne.

Przeczytaj cały plik.

Najczęstszą i uproszczoną metodą odczytu plików jest użycie metody odczytu z pakietu IOUTIL. Ta metoda odczytuje cały plik i przechowuje go jako duży ciąg.

Pomimo uproszczonego charakteru ta metoda nie jest bardzo wydajna, jeśli chodzi o pracę z dużymi plikami.

Użyjmy przykładu, aby zilustrować pracę z metodą ReadFile ().

Zacznij od utworzenia pliku o nazwie „Hello.txt ”w obecnym katalogu roboczym.

$ Touch Hello.tekst

Następnie edytuj plik za pomocą edytora tekstu i dodaj następujące:

$ vim Hello.tekst
> Hello From Hello.tekst

Zamknij i zapisz plik.

Teraz możemy użyć metody ReadFile () do odczytania zawartości całego pliku jako:

Pakiet Main
import (
„FMT”
„IO/ioutil”
"dziennik"
)
func main ()
dane, err: = ioutil.Readfile ("Hello.tekst")
Jeśli err != zero
dziennik.Fatalny (err)

fmt.Println (string (dane))

Powyższy program odczytuje plik i wydrukuje jego zawartość na konsoli. Zauważ, że musimy przekonwertować dane na ciąg przed wydrukowaniem. W przeciwnym razie dostaniesz kawałek postaci.

Przeczytaj plik przez fragmenty

Innym sposobem odczytania pliku w Go jest odczytanie go w fragmentach. Oznacza to, że nie ładujemy całej zawartości do pamięci, ale zamiast tego odcień małe sekcje.

Może to być bardzo dobra technika podczas pracy z dużymi plikami.

Na przykład:

Pakiet Main
import (
„Bufio”
„FMT”
„IO”
"dziennik"
„OS”
)
func main ()
Plik, err: = OS.Otwarte ("Witam.tekst")
Jeśli err != zero
dziennik.Fatalny (err)

plik odroczenia.Zamknąć()
czytnik: = bufio.NewReader (plik)
Bufor: = Make ([] bajt, 8)
Do
odczyt, err: = czytnik.Odczyt (bufor)
Jeśli err != zero
Jeśli err != io.Eof
dziennik.Fatalny (err)

przerwa

fmt.Println (string (bufor [: odczyt]))

W powyższym przykładzie czytamy plik w fragmenty 8 bajtów. Odczytujemy dane w buforze za pomocą metody odczytu za pomocą A dla pętli. Na koniec drukujemy bufor tablicy za pomocą metody println ().

Powstałe fragmenty odczytu danych są jak pokazano:

$ Go Run
Witam fr
om h
Ello.tekst
plik

Odczyt wiersz pliku po wierszu

Możemy również odczytać wiersz plików za pomocą pakietu Bufio. Przykładem jest to, jak pokazano poniżej:

Pakiet Main
import (
„Bufio”
„FMT”
"dziennik"
„OS”
)
func main ()
Plik, err: = OS.Otwarte ("Witam.tekst")
Jeśli err != zero
dziennik.Fatalny (err)

plik odroczenia.Zamknąć()
Skaner: = bufio.NewsScanner (plik)
dla skanera.Skanowanie()
fmt.Println (skaner.Tekst())

Jeśli err: = skaner.Błądzić(); błądzić != zero
dziennik.Fatalny (err)

Skaner zeskanuje linię i wydrukuje nową linię w dowolnym momencie, gdy napotyka znak \ n.

Przeczytaj Word Word według słowa

Możemy również użyć metody Scanword z pakietu Bufio, aby odczytać słowo pliku według słowa. Przykładowy kod jest taki jak pokazano:

Pakiet Main
import (
„Bufio”
„FMT”
"dziennik"
„OS”
)
func main ()
Plik, err: = OS.Otwarte ("Witam.tekst")
Jeśli err != zero
dziennik.Fatalny (err)

plik odroczenia.Zamknąć()
Skaner: = bufio.NewsScanner (plik)
Skaner.Split (Bufio.Scanwords)
dla skanera.Skanowanie()
fmt.Println (skaner.Tekst())

Jeśli err: = skaner.Błądzić(); błądzić != zero
dziennik.Fatalny (err)

W powyższym przykładzie skanujemy słowo pliku za pomocą słów za pomocą słów skanowych dostarczonych przez pakiet Bufio.

Powstałe wyjście to:

Cześć
z

Witam.tekst
plik

Wniosek

W tym przewodniku omówiono wspólne metody i techniki odczytu plików w języku programowania Go.

Koduj!!