Kā programmēšanas valodai Go ir plašs iebūvēto funkciju klāsts, tostarp iespēja izveidot, lasīt un rakstīt failus, piemēram, teksta (.txt) failus.

Faili ir svarīgas mūsu ikdienas dzīves sastāvdaļas mūsdienu pasaulē. Teksta faili ir noderīgi strukturētu, cilvēkiem lasāmu datu glabāšanai, neizmantojot ārēju programmatūru vai datu bāzes.

Ja vēlaties uzzināt, kā lietotnē Go sākt manipulēt ar teksta failiem, šis raksts ir jums īstā vieta.

Bufio pakotne Go

The bufio pakotne, kas ir daļa no Go standarta bibliotēkas, tiek izmantota buferizētām ievades un izvades darbībām, tāpēc arī nosaukums. The bufio pakete balstās uz io. Lasītājs un io. rakstnieks saskarnes, kas tiek plaši izmantotas, ieviešot lielāko daļu Go standarta pakotņu.

The bufio pakotne iet vēl vienu soli tālāk, ieviešot buferizāciju, padarot to noderīgu IO operācijām, kas saistītas ar teksta datiem.

Lai izmantotu bufio pakotni savā programmā, jums tas jāimportē kopā ar citām pakotnēm.

imports (
"fmt"
"bufio"
)

Jūs droši vien dzirdējāt, kad jūs

instagram viewer
sāku ar Go ka tajā ir viss, kas jums varētu būt nepieciešams programmētājam. Tiešai saziņai ar operētājsistēmu ir pakotne ar nosaukumu os kas nodrošina no platformas neatkarīgas funkcijas.

The os un bufio pakotnes padara teksta failu manipulāciju neticami vienkāršu.

Lai gan lielākā daļa no os pakotnes funkcijas ir līdzīgas Unix, tās visas izmanto kļūdu apstrādes Go stilu, kas ļauj vienkārši lasīt kļūdu ziņojumus un atkļūdošanas kodu.

Tātad, kā lietotnē Go manipulēt ar failiem, kas satur tekstu?

Kā nolasīt datus no teksta faila

Lai nolasītu datus no teksta failiem, jums jāzvana uz os iepakojums Atvērt () funkcija, kas kā parametru pieņem nolasāmā faila nosaukumu. Vēl viena faila iegūšanas metode ir izmantot Atver failu() funkciju.

Galvenā atšķirība starp Atvērt () un Atver failu() ir to īstenošanā. Atvērt () atver failu tikai lasīšanas režīmā (ar O_RDONLY karogs), kamēr Atver failu() nodrošina lielāku elastību, pieņemot trīs parametrus, proti:

  • Faila nosaukums
  • Faila atvēršanas režīms: derīgie faila atvēršanas režīmi ir parādīti tabulā zemāk.
    Karogs Nozīme
    O_RDONLY Atver failu tikai lasīšanas režīmā
    O_WRONLY Atver failu tikai rakstīšanas režīmā
    O_RDWR Atver failu lasīšanas-rakstīšanas režīmā
    O_APPEND Rakstot failam pievieno datus
    O_CREATE Izveido jaunu failu, ja tāda nav
    O_EXCL Izmanto kopā ar O_CREATE, lai norādītu, ka fails ir jāizveido tikai tad, ja tas neeksistē
    O_SYNC Atver failu sinhronai I/O
    O_TRUNC Ja iespējams, saīsiniet failu, kad tas ir atvērts
  • Faila atļaujas: tādas pašas kā failu atļauju biti operētājsistēmā Linux izmanto, lai norādītu faila piekļuves noteikumus, piemēram, 0777, lai piešķirtu lasīšanas, rakstīšanas un izpildes atļaujas visiem lietotāju veidiem.

Tālāk redzamais kods parāda, kā nolasīt datus no teksta faila programmā Go, izmantojot os. Atvērt (), un Skenēt () kas šajā gadījumā darbojas a Iet uz cilpu.

iepakojums galvenais
imports (
"bufio"
"fmt"
"žurnāls"
"os"
)
/**
SATURS "testa fails.txt" failu.
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 galvenais(){
fails, kļūda := os. Atvērt("testa fails.txt")
// cita metode, izmantojot os. Atver failu()
// fails, err = os. Atver failu("testa fails.txt", os. O_RDONLY, 0644)
if err != nil {
žurnāls.Lentenīgi(kļūda)
}
atliktfailu.Aizvērt()
fmt. Println("Fails veiksmīgi atvērts. Tagad lasa faila saturu rindiņu pa rindiņai:")
// izveidot skeneris no uz failuuzlasīttekstuno
skeneris := bufio. NewScanner (fails)
// skenējiet vai lasiet teksta baitus rindiņu pa rindiņai
priekšskeneris.Skenēt() {
fmt.Drukāt(skeneris.Teksts())
}
ja err := skeneris. Err(); err != nil {
žurnāls.Lentenīgi(kļūda)
}
}

Kad palaižat iepriekš norādīto kodu ar palaist filename.go, tas rada tālāk redzamo izvadi:

Ja ievadāt tikai faila nosaukumu, nevis ceļu uz Atvērt () vai Atver failu() funkcija lasīšanas darbībām, Go pieņem, ka fails atrodas pašreizējā direktorijā un atgriež kļūdu, ja tas to neatrod. Ja vēlaties strādāt ar failiem ārpus pašreizējā direktorija, jums ir jānorāda ceļš uz failu.

Kā rakstīt datus teksta failā

The bufio pakotne nodrošina buferizētu rakstnieks saskarne, kas saglabā datu baitus un ieraksta tos failā, izmantojot a Flush () funkciju.

Nākamais parauga kods ir faila lasīšanas koda turpinājums. Šajā piemērā dati tiek ierakstīti esošajā testa fails.txt izmantojot O_WRONLY un O_APPEND karogi.

Pievienojiet tālāk norādītās koda rindiņas iepriekš esošajai programmai pirms noslēdzošās cirtainās figūriekavas galvenais () funkcija:

// ierakstiet izejas datus failā
fails, err = os. OpenFile ("testfile.txt", os. O_APPEND|os. O_WRONLY, 0644)
ja kļūda! = nulle {
žurnāls. Liktenīga (kļūda)
}
atlikt failu. Aizvērt ()
fmt. Println ("Fails veiksmīgi atvērts, tagad gatavojas rakstīt datus failā...")
// izveidot buferētu Writer objektu, lai ierakstītu datus failā
textWriter := bufio. NewWriter (fails)
// pirms faila saglabāšanas ierakstiet virkni buferī.
_, err = textWriter. WriteString("-Tas ir a jauns failam pievienots teksts.")
ja kļūda! = nulle {
žurnāls. Liktenīga (kļūda)
}
teksta rakstītājs. Flush ()
fmt. Println("Dati veiksmīgi ierakstīti failā...")

Jūsu visas programmas izvadei vajadzētu izskatīties šādi:

Kad atverat testa fails.txt failu, jūs redzēsit arī jauno rindiņu, kas pievienota faila beigās, tāpat kā attēlā zemāk:

Failu apstrāde programmā Go ir vienkārša

Go ļauj strādāt ar dažādiem failiem, ne tikai ar teksta failiem. Ir daudzas papildu iebūvētas bibliotēkas un funkcijas darbam ar dažāda veida datiem no failiem, tostarp JSON un CSV.

Lai redzētu, kā viņi rīkojas atšķirīgi atkarībā no situācijas, varat eksperimentēt ar dažādiem karodziņiem un failu atļaujām, kas ir pieejamas lietošanai ar Atver failu().