Константа os.O_RDONLY
Константа os.O_RDONLY задает режим открытия файла только для чтения.
Она используется в качестве аргумента функции os.OpenFile для указания,
что файл должен быть открыт для чтения данных, но не для записи.
В отличие от функции os.Open, которая автоматически открывает файл только для чтения,
константа os.O_RDONLY дает явный контроль над режимом открытия.
Синтаксис
os.OpenFile(name, os.O_RDONLY, 0)
В качестве первого параметра передается имя файла для открытия,
вторым параметром передается константа os.O_RDONLY,
третьим параметром обычно передается 0, так как режим доступа не используется.
Пример
Давайте откроем файл "example.txt" в режиме только для чтения и прочитаем его содержимое:
package 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]))
}
Результат выполнения кода:
"Hello, World!"
Пример
Попробуем открыть несуществующий файл в режиме только для чтения:
package 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")
}
Результат выполнения кода:
"Error: open nonexistent.txt: no such file or directory"
Пример
Давайте попробуем записать данные в файл, открытый с константой os.O_RDONLY:
package 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")
}
Результат выполнения кода:
"Write error: bad file descriptor"
Смотрите также
-
константу
os.O_WRONLY,
которая открывает файл только для записи -
константу
os.O_RDWR,
которая открывает файл для чтения и записи -
константу
os.O_CREATE,
которая создает файл, если он не существует -
функцию
os.OpenFile,
которая открывает файл с указанными флагами