Функция os.OpenFile

Функция os.OpenFile открывает файл по указанному пути с заданными флагами режима доступа и правами доступа. Она возвращает указатель на os.File и ошибку. Первым параметром функция принимает путь к файлу, вторым - флаги режима доступа, третьим - права доступа к файлу (режим FileMode). Функция предоставляет полный контроль над тем, как открывается файл, позволяя, например, открыть файл для чтения и записи, создать его, если он не существует, или обрезать при открытии.

Синтаксис

goos.OpenFile(name string, flag int, perm FileMode) (*File, error)

Пример

Давайте откроем файл для чтения и записи. Если файл не существует, он будет создан с правами доступа 0644:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.OpenFile("example.txt", os.O_RDWR|os.O_CREATE, 0644)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer file.Close()

  fmt.Println("File opened successfully")
}

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

go"File opened successfully"

Пример

Давайте откроем файл только для записи. Если файл существует, он будет обрезан до нулевой длины:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.OpenFile("example.txt", os.O_WRONLY|os.O_TRUNC, 0644)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer file.Close()

  fmt.Println("File opened for writing")
}

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

go"File opened for writing"

Пример

Давайте откроем файл для дозаписи данных в конец файла:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.OpenFile("example.txt", os.O_APPEND|os.O_WRONLY|os.O_CREATE, 0644)
  if err != nil {
    fmt.Println(err)
    return
  }
  defer file.Close()

  _, err = file.WriteString("Appending new line\n")
  if err != nil {
    fmt.Println(err)
    return
  }

  fmt.Println("Data appended successfully")
}

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

go"Data appended successfully"

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

  • функцию os.Open,
    которая открывает файл только для чтения
  • функцию os.Create,
    которая создает или обрезает файл для записи
  • функцию os.ReadFile,
    которая читает содержимое файла целиком
  • функцию os.WriteFile,
    которая записывает данные в файл целиком