Kaip programavimo kalba, Go turi daugybę integruotų funkcijų, įskaitant galimybę kurti, skaityti ir rašyti failus, pvz., tekstinius (.txt) failus.
Failai yra svarbūs mūsų kasdienio gyvenimo komponentai šiuolaikiniame pasaulyje. Tekstiniai failai yra naudingi struktūriniams žmonėms skaitomiems duomenims saugoti nenaudojant išorinės programinės įrangos ar duomenų bazių.
Jei jums įdomu, kaip galėtumėte pradėti manipuliuoti tekstiniais failais „Go“, šis straipsnis jums tinka.
„Bufio“ paketas „Go“.
The bufio paketas, kuris yra Go standartinės bibliotekos dalis, naudojamas buferinėms įvesties ir išvesties operacijoms, taigi ir pavadinimas. The bufio paketas remiasi io. Skaitytojas ir io. Rašytojas sąsajos, kurios plačiai naudojamos diegiant daugumą standartinių Go paketų.
The bufio paketas žengia dar vieną žingsnį į priekį įdiegdamas buferį, todėl jis naudingas atliekant IO operacijas, susijusias su tekstiniais duomenimis.
Norėdami naudoti bufio paketą savo programoje, turėtumėte jį importuoti kartu su kitais paketais.
importuoti (
"fmt"
"bufio"
)
Tikriausiai girdėjote, kai pradėjo nuo Go kad jame yra viskas, ko jums gali prireikti kaip programuotojui. Tiesioginiam ryšiui su operacine sistema yra paketas, vadinamas os kuri teikia nuo platformos nepriklausomas funkcijas.
The os ir bufio paketai daro teksto failų manipuliavimą neįtikėtinai paprastą.
Nors didžioji dauguma os paketo funkcijos yra panašios į „Unix“, visos jos naudoja „Go“ klaidų apdorojimo stilių, todėl paprasta skaityti klaidų pranešimus ir derinimo kodą.
Taigi, kaip manipuliuoti failais, kuriuose yra tekstas „Go“?
Kaip skaityti duomenis iš tekstinio failo
Norėdami skaityti duomenis iš tekstinių failų, turite paskambinti os paketai Atviras() funkcija, kuri kaip parametrą priima nuskaityto failo pavadinimą. Kitas būdas gauti failą yra naudoti Atidaryti failą() funkcija.
Pagrindinis skirtumas tarp Atviras() ir Atidaryti failą() yra jų įgyvendinime. Atviras() atidaro failą tik skaitymo režimu (su O_DONLY vėliava), o Atidaryti failą() suteikia daugiau lankstumo priimdama tris parametrus, būtent:
- Failo pavadinimas
- Failo atidarymo režimas: galiojantys failo atidarymo režimai parodyti toliau esančioje lentelėje.
Vėliava Reikšmė O_DONLY Failas atidaromas tik skaitymo režimu O_WRONLY Atidaro failą tik rašymo režimu O_RDWR Atidaro failą skaitymo ir rašymo režimu O_APPEND Rašydamas prideda duomenis prie failo O_CREATE Sukuria naują failą, jei jo nėra O_EXCL Naudojamas kartu su O_CREATE, nurodant, kad failas turėtų būti sukurtas tik tuo atveju, jei jo nėra O_SYNC Atidaro sinchroninio įvesties/išvesties failą O_TRUNC Jei įmanoma, sutrumpinkite failą atidarytą - Failų leidimai: tokie patys kaip failo leidimo bitai „Linux“. naudojamas failų prieigos taisyklėms nurodyti, pvz., 0777, kad suteiktų skaitymo, rašymo ir vykdymo leidimus visų tipų naudotojams.
Toliau pateiktame kode parodyta, kaip skaityti duomenis iš tekstinio failo naudojant Go naudojant os. Atviras(), ir Nuskaityti () kuris šiuo atveju vyksta a Eikite į kilpą.
paketą pagrindinis
importuoti (
"bufio"
"fmt"
"žurnalas"
"os"
)
/**
TURINYS "testfile.txt" failą.
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 pagrindinis(){
failas, klaida := os. Atviras("testfile.txt")
// kitas metodas naudojant os. Atidaryti failą()
// failas, err = os. Atidaryti failą("testfile.txt", os. O_RDONLY, 0644)
if err != nil {
žurnalas.Mirtinas(klysti)
}
atidėtifailą.Uždaryti()
fmt. Println("Failas sėkmingai atidarytas. Dabar skaitome failo turinį eilutė po eilutės:")
// sukurti skaitytuvas iš į failąįskaitytitekstąiš
skaitytuvas := bufio. NewScanner (failas)
// nuskaityti arba nuskaityti teksto baitus eilutė po eilutės
dėlskaitytuvas.Nuskaityti() {
fmt.Spausdinti(skaitytuvas.Tekstas())
}
jei klysta := skaitytuvas. Err (); err != nil {
žurnalas.Mirtinas(klysti)
}
}
Kai paleisite aukščiau esantį kodą su eik paleiskite failovardas.go, jis sukuria toliau pateiktą išvestį:
Jei įvesite tik failo pavadinimą, o ne kelią į Atviras() arba Atidaryti failą() funkcija skaitymo operacijoms, Go daro prielaidą, kad failas yra dabartiniame kataloge ir grąžina klaidą, jei jo neranda. Jei reikia dirbti su failais, esančiais ne dabartiniame kataloge, turėtumėte nurodyti kelią į failą.
Kaip įrašyti duomenis į tekstinį failą
The bufio paketas suteikia buferinį Rašytojas sąsaja, kurioje saugomi duomenų baitai ir įrašomi į failą naudojant a Nuplaukite () funkcija.
Kitas pavyzdinis kodas yra failo skaitymo kodo tęsinys. Šiame pavyzdyje duomenys įrašomi į esamus testfile.txt naudojant O_WRONLY ir O_APPEND vėliavos.
Į aukščiau pateiktą programą pridėkite šias kodo eilutes prieš baigiamąjį riestinį skliaustą pagrindinis () funkcija:
// įrašyti išvesties duomenis į failą
failas, err = os. OpenFile ("testfile.txt", os. O_APPEND|os. O_WRONLY, 0644)
jeigu klysta! = nulis {
žurnalas. Mirtinas (klysta)
}
atidėti failą. Uždaryti()
fmt. Println ("Failas sėkmingai atidarytas, dabar ruošiamasi įrašyti duomenis į failą...")
// sukurti buferinį Writer objektą, kad įrašytumėte duomenis į failą
textWriter := bufio. NewWriter (failas)
// Įrašykite eilutę į buferį prieš išsaugant failą.
_, err = textWriter. WriteString("- Tai yra a naujas tekstas pridėtas prie failo.")
jeigu klysta! = nulis {
žurnalas. Mirtinas (klysta)
}
teksto rašytojas. Nuplaukite ()
fmt. Println("Duomenys sėkmingai įrašyti į failą...")
Visos jūsų programos išvestis turėtų atrodyti taip:
Kai atidarote testfile.txt failą, taip pat pamatysite naują eilutę, pridėtą failo pabaigoje, kaip ir toliau pateiktame paveikslėlyje:
Failų tvarkymas Go yra paprastas
Go leidžia dirbti su įvairiais failais, ne tik su tekstiniais failais. Yra daug papildomų integruotų bibliotekų ir funkcijų, skirtų darbui su įvairių tipų duomenimis iš failų, įskaitant JSON ir CSV.
Norėdami pamatyti, kaip jie elgiasi skirtingai, priklausomai nuo situacijos, galite eksperimentuoti su įvairiomis vėliavėlėmis ir failų leidimais, kuriuos galima naudoti su Atidaryti failą().