РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
538 of 1593 menu

Константа os.O_APPEND

Константа os.O_APPEND предназначена для открытия файла в режиме дозаписи. При использовании этого флага все данные, записываемые в файл, будут добавляться в его конец, независимо от текущей позиции указателя в файле. Это гарантирует, что существующее содержимое файла не будет перезаписано. Константа применяется совместно с функцией os.OpenFile, где она передается в качестве одного из флагов.

Синтаксис

os.O_APPEND

Пример использования с os.OpenFile

В следующем примере мы открываем файл для дозаписи. Если файл не существует, он будет создан (благодаря флагу os.O_CREATE). Затем мы записываем в него две строки.

package main import ( "fmt" "os" ) func main() { file, err := os.OpenFile("example.txt", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644) if err != nil { fmt.Println("Error:", err) return } defer file.Close() _, err = file.WriteString("Первая запись\n") if err != nil { fmt.Println("Error:", err) return } _, err = file.WriteString("Вторая запись\n") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Данные успешно добавлены в файл") }

Результат выполнения кода:

"Данные успешно добавлены в файл"

Пример дозаписи в существующий файл

Предположим, что у нас уже есть файл с содержимым "Hello, World!". Откроем его с флагом os.O_APPEND и добавим еще одну строку.

package main import ( "fmt" "os" ) func main() { file, err := os.OpenFile("data.txt", os.O_APPEND|os.O_WRONLY, 0644) if err != nil { fmt.Println("Error:", err) return } defer file.Close() _, err = file.WriteString("Добавленная строка\n") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Строка добавлена в конец файла") }

Результат выполнения кода:

"Строка добавлена в конец файла"

Пример: попытка записи в начало файла с os.O_APPEND

Даже если мы попытаемся переместить указатель файла в начало с помощью file.Seek, запись все равно произойдет в конец файла, благодаря флагу os.O_APPEND. Это демонстрирует, что флаг имеет приоритет над позицией указателя.

package main import ( "fmt" "os" ) func main() { file, err := os.OpenFile("append_test.txt", os.O_APPEND|os.O_CREATE|os.O_RDWR, 0644) if err != nil { fmt.Println("Error:", err) return } defer file.Close() // Перемещаем указатель в начало файла _, err = file.Seek(0, 0) if err != nil { fmt.Println("Error:", err) return } // Запись все равно произойдет в конец _, err = file.WriteString("Эта строка будет в конце\n") if err != nil { fmt.Println("Error:", err) return } fmt.Println("Запись выполнена в конец файла") }

Результат выполнения кода:

"Запись выполнена в конец файла"

Смотрите также

  • константу os.O_CREATE,
    которая создает файл, если он не существует
  • константу os.O_RDWR,
    которая открывает файл для чтения и записи
  • функцию os.OpenFile,
    которая открывает файл с указанными флагами
  • метод os.File.WriteString,
    который записывает строку в файл
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить