MySQL Java JavaScript PHP Python HTML-CSS C-sharp C++ Go

Citirea și scrierea fișierelor

Scrierea într-un fișier

Pentru a scrie informații textuale într-un fișier, se poate folosi metoda WriteString() a obiectului os.File, care scrie un șir de caractere în fișier:

package main
import (
    "fmt"
    "os"
)

func main() {
    text := "Hello Gold!"
    file, err := os.Create("hello.txt")
     
    if err != nil{
        fmt.Println("Nu s-a putut crea fișierul:", err) 
        os.Exit(1) 
    }
    defer file.Close() 
    file.WriteString(text)
     
    fmt.Println("Gata.")
}

În acest caz, fișierul hello.txt este creat, iar șirul „Hello Gold!” este scris în el.

Pentru a scrie informații binare non-textuale sub formă de octeți, se folosește metoda Write() (implementarea interfeței io.Writer):

package main
import (
    "fmt"
    "os"
)

func main() {
    data := []byte("Hello Bold!")
    file, err := os.Create("hello.bin")
    if err != nil{
        fmt.Println("Nu s-a putut crea fișierul:", err) 
        os.Exit(1) 
    }
    defer file.Close() 
    file.Write(data)
     
    fmt.Println("Gata.")
}

Citirea din fișier

Deoarece tipul io.File implementează interfața io.Reader, pentru a citi din fișier, putem folosi metoda Read(). Această metodă permite obținerea conținutului fișierului sub formă de octeți:

package main
import (
    "fmt"
    "os"
    "io"
)

func main() {
    file, err := os.Open("hello.txt")
    if err != nil{
        fmt.Println(err) 
        os.Exit(1) 
    }
    defer file.Close() 
     
    data := make([]byte, 64)
     
    for{
        n, err := file.Read(data)
        if err == io.EOF{   // dacă s-a ajuns la sfârșitul fișierului
            break           // ieșim din ciclu
        }
        fmt.Print(string(data[:n]))
    }
}

Pentru a citi datele, se definește un slice de 64 de octeți. Într-un ciclu infinit, conținutul fișierului este citit în slice, iar când se ajunge la sfârșitul fișierului (adică când primim eroarea io.EOF), se iese din ciclu. De asemenea, deoarece datele sunt reprezentate de un slice de octeți și fișierul hello.txt conține informații textuale, pentru a afișa textul pe consolă, transformăm slice-ul de octeți într-un șir de caractere: string(data[:n]).