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

Константа os.O_RDONLY задает режим открытия файла только для чтения. Она используется в качестве аргумента функции os.OpenFile для указания, что файл должен быть открыт для чтения данных, но не для записи. В отличие от функции os.Open, которая автоматически открывает файл только для чтения, константа os.O_RDONLY дает явный контроль над режимом открытия.

Синтаксис

goos.OpenFile(name, os.O_RDONLY, 0)

В качестве первого параметра передается имя файла для открытия, вторым параметром передается константа os.O_RDONLY, третьим параметром обычно передается 0, так как режим доступа не используется.

Пример

Давайте откроем файл "example.txt" в режиме только для чтения и прочитаем его содержимое:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.OpenFile("example.txt", os.O_RDONLY, 0)
  if err != nil {
    fmt.Println("Error opening file:", err)
    return
  }
  defer file.Close()

  // Read file contents
  data := make([]byte, 100)
  n, err := file.Read(data)
  if err != nil {
    fmt.Println("Error reading file:", err)
    return
  }

  fmt.Println(string(data[:n]))
}

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

go"Hello, World!"

Пример

Попробуем открыть несуществующий файл в режиме только для чтения:

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.OpenFile("nonexistent.txt", os.O_RDONLY, 0)
  if err != nil {
    fmt.Println("Error:", err)
    return
  }
  defer file.Close()

  fmt.Println("File opened successfully")
}

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

go"Error: open nonexistent.txt: no such file or directory"

Пример

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

gopackage main

import (
  "fmt"
  "os"
)

func main() {
  file, err := os.OpenFile("example.txt", os.O_RDONLY, 0)
  if err != nil {
    fmt.Println("Error opening file:", err)
    return
  }
  defer file.Close()

  _, err = file.WriteString("Hello")
  if err != nil {
    fmt.Println("Write error:", err)
    return
  }

  fmt.Println("Write successful")
}

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

go"Write error: bad file descriptor"

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

  • константу os.O_WRONLY,
    которая открывает файл только для записи
  • константу os.O_RDWR,
    которая открывает файл для чтения и записи
  • константу os.O_CREATE,
    которая создает файл, если он не существует
  • функцию os.OpenFile,
    которая открывает файл с указанными флагами