Programozási nyelvként a Go számos beépített funkcióval rendelkezik, beleértve a fájlok, például szöveges (.txt) fájlok létrehozásának, olvasásának és írásának képességét.

A fájlok a modern világban mindennapi életünk fontos alkotóelemei. A szöveges fájlok hasznosak strukturált, ember által olvasható adatok tárolására külső szoftverek vagy adatbázisok használata nélkül.

Ha kíváncsi arra, hogyan kezdhetné el a szövegfájlok kezelését a Go alkalmazásban, ez a cikk a megfelelő hely az Ön számára.

A bufio csomag a Go-ban

A bufio csomag, amely a Go szabványos könyvtárának része, pufferelt bemeneti és kimeneti műveletekhez használatos, innen a név. A bufio csomag a io. Olvasó és io. Író interfészek, amelyeket széles körben használnak a Go szabványos csomagjainak többségének megvalósításában.

A bufio csomag egy lépéssel tovább megy a pufferelés megvalósításával, ami hasznossá teszi a szöveges adatokat tartalmazó IO műveletekhez.

Használatához a bufio csomagot a programban, importálnia kell más csomagok mellé.

instagram viewer
import (
"fmt"
"bufio"
)

Valószínűleg hallottad, amikor elindult a Go-val hogy minden benne van, amire programozóként szüksége lehet. Az operációs rendszerrel való közvetlen kommunikációhoz létezik egy ún os amely platformfüggetlen funkciókat biztosít.

A os és bufio csomagok hihetetlenül egyszerűvé teszik a szövegfájlok kezelését.

Bár a túlnyomó többség a os A csomag függvényei Unix-szerűek, mindegyik a Go hibakezelési stílust alkalmazza, ami egyszerűvé teszi a hibaüzenetek és a hibakeresési kód olvasását.

Tehát hogyan lehet szöveget tartalmazó fájlokat kezelni a Go programban?

Hogyan olvassunk ki adatokat szöveges fájlból

A szöveges fájlok adatainak olvasásához hívnia kell a os csomagok Nyisd ki() függvény, amely paraméterként elfogadja az olvasandó fájl nevét. A fájl beszerzésének másik módja a Fájl megnyitása() funkció.

A fő különbség között Nyisd ki() és Fájl megnyitása() végrehajtásukban van. Nyisd ki() csak olvasható módban nyit meg egy fájlt (a O_RDONLY zászló), míg Fájl megnyitása() nagyobb rugalmasságot biztosít három paraméter elfogadásával, nevezetesen:

  • Fájl név
  • Fájlmegnyitási mód: Az érvényes fájlmegnyitási módok az alábbi táblázatban láthatók.
    Zászló Jelentése
    O_RDONLY Csak olvasható módban nyitja meg a fájlt
    O_WRONLY Megnyitja a fájlt csak írási módban
    O_RDWR Megnyitja a fájlt olvasási-írási módban
    O_APPEND Íráskor adatokat csatol a fájlhoz
    O_CREATE Új fájlt hoz létre, ha nem létezik
    O_EXCL Az O_CREATE-vel együtt használatos, jelezve, hogy a fájlt csak akkor kell létrehozni, ha az nem létezik
    O_SYNC Megnyitja a szinkron I/O fájlt
    O_TRUNC Ha lehetséges, nyissa meg a fájlt
  • Fájlengedélyek: Ugyanaz, mint a fájlengedély bitek Linuxban fájl-hozzáférési szabályok meghatározására szolgál, például 0777 olvasási, írási és végrehajtási engedélyek megadására minden felhasználótípus számára.

Az alábbi kód bemutatja, hogyan lehet adatokat olvasni szöveges fájlból a Go használatával os. Nyisd ki(), és Letapogatás() amely ebben az esetben a Menj a hurokra.

csomag fő-
import (
"bufio"
"fmt"
"log"
"os"
)
/**
TARTALMA A "tesztfájl.txt" fájlt.
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 fő-(){
fájl, err := os. Nyisd ki("tesztfájl.txt")
// másik módszer az os. Fájl megnyitása()
// fájl, err = os. Fájl megnyitása("tesztfájl.txt", os. O_RDONLY, 0644)
if err != nil {
log.Halálos(téved)
}
elhalasztjafájlt.Bezárás()
fmt. Println("A fájl megnyitása sikeres volt. Most soronként olvassuk a fájl tartalmát:")
// teremt scanner tól től a fájltnak nekolvasszövegtól től
szkenner := bufio. NewScanner (fájl)
// soronként szkenneli vagy olvassa be a szöveg bájtjait
számárascanner.Letapogatás() {
fmt.Println(scanner.Szöveg())
}
ha err := szkenner. Téved(); hiba != nil {
log.Halálos(téved)
}
}

Amikor a fenti kódot a futtassa a filename.go fájlt, az alábbi kimenetet állítja elő:

Ha csak a fájlnevet adja meg, és nem a fájl elérési útját Nyisd ki() vagy Fájl megnyitása() függvény olvasási műveletekhez, a Go feltételezi, hogy a fájl a jelenlegi könyvtárban van, és hibát ad vissza, ha nem találja meg. Ha az aktuális könyvtáron kívüli fájlokkal kell dolgoznia, adja meg a fájl elérési útját.

Hogyan írjunk adatokat szöveges fájlba

A bufio csomag pufferelt Író interfész, amely bájtnyi adatot tárol és fájlba írja a segítségével a Flush() funkció.

A következő mintakód a fájl olvasására szolgáló kód folytatása. Ebben a példában az adatok a meglévőbe vannak írva tesztfájl.txt használni a O_WRONLY és O_APPEND zászlókat.

Adja hozzá a következő kódsorokat a fenti programhoz, a záró göndör kapcsos zárójel előtt fő() funkció:

// kimeneti adatok írása fájlba
fájl, err = os. OpenFile("testfile.txt", os. O_APPEND|os. O_WRONLY, 0644)
ha hiba! = nulla {
log. Végzetes (hiba)
}
elhalasztja fájlt. Bezárás()
fmt. Println("A fájl sikeresen megnyitva, most készül az adatok fájlba írása...")
// pufferelt Writer objektum létrehozása az adatok fájlba írásához
textWriter := bufio. NewWriter (fájl)
// karakterlánc írása a pufferbe a fájl mentése előtt.
_, err = textWriter. WriteString("-Ez egy új szöveg hozzáadva a fájlhoz.")
ha hiba! = nulla {
log. Végzetes (hiba)
}
szövegíró. Flush()
fmt. Println("Az adatok sikeresen beírva a fájlba...")

A teljes program kimenetének így kell kinéznie:

Amikor kinyitod a tesztfájl.txt fájlt, az új sort is látni fogja a fájl végéhez csatolva, az alábbi képhez hasonlóan:

A fájlkezelés a Go alkalmazásban egyszerű

A Go segítségével számos fájllal dolgozhat, nem csak szöveges fájlokkal. Számos további beépített könyvtár és funkció létezik a fájlokból származó különböző típusú adatok kezeléséhez, beleértve a JSON-t és a CSV-t.

Ha szeretné látni, hogyan viselkednek a helyzettől függően eltérően, kísérletezhet a különféle jelzőkkel és fájlengedélyekkel, amelyek a következőkkel használhatók. Fájl megnyitása().