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é.
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().