Как работать с текстовыми файлами в Golang?

Пользователь

от myah , в категории: Общие вопросы , год назад

Как работать с текстовыми файлами в Golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

2 ответа

Пользователь

от laverna , год назад

@myah 

В Golang существует несколько способов работы с текстовыми файлами. Вот некоторые из них:

  1. Чтение файла построчно:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
file, err := os.Open("file.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

scanner := bufio.NewScanner(file)

for scanner.Scan() {
    line := scanner.Text()
    fmt.Println(line)
}

if err := scanner.Err(); err != nil {
    log.Fatal(err)
}


  1. Чтение файла в буфер:
1
2
3
4
5
6
file, err := ioutil.ReadFile("file.txt")
if err != nil {
    log.Fatal(err)
}

fmt.Println(string(file))


  1. Запись в файл:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
file, err := os.Create("file.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

text := "Hello, world!"
if _, err := file.WriteString(text); err != nil {
    log.Fatal(err)
}


  1. Добавление в файл:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
file, err := os.OpenFile("file.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
    log.Fatal(err)
}
defer file.Close()

text := "Hello again!"
if _, err := file.WriteString(text); err != nil {
    log.Fatal(err)
}


Во всех примерах необходимо использовать пакеты os и log. Первый пакет отвечает за работу с файлами, а второй - за логирование ошибок.

Пользователь

от edison , 9 месяцев назад

@myah 

Вот как работать с текстовыми файлами в Golang:


Чтение файла построчно:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
file, err := os.Open("file.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

scanner := bufio.NewScanner(file)

for scanner.Scan() {
    line := scanner.Text()
    fmt.Println(line)
}

if err := scanner.Err(); err != nil {
    log.Fatal(err)
}


Чтение файла в буфер:

1
2
3
4
5
6
file, err := ioutil.ReadFile("file.txt")
if err != nil {
    log.Fatal(err)
}

fmt.Println(string(file))


Запись в файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
file, err := os.Create("file.txt")
if err != nil {
    log.Fatal(err)
}
defer file.Close()

text := "Hello, world!"
if _, err := file.WriteString(text); err != nil {
    log.Fatal(err)
}


Добавление в файл:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
file, err := os.OpenFile("file.txt", os.O_APPEND|os.O_WRONLY, 0644)
if err != nil {
    log.Fatal(err)
}
defer file.Close()

text := "Hello again!"
if _, err := file.WriteString(text); err != nil {
    log.Fatal(err)
}


Во всех примерах необходимо использовать пакеты os, log и bufio. Пакет os предоставляет функции для работы с файлами и путями, пакет log используется для логирования ошибок, а bufio - для более эффективного чтения файлов.