Константа os.O_RDWR
Константа os.O_RDWR используется при открытии
файлов и указывает, что файл должен быть открыт
одновременно для чтения и записи. Она передается
в функцию os.OpenFile в качестве второго
аргумента - флага доступа. При использовании этой
константы с другими флагами, такими как
os.O_CREATE или os.O_APPEND,
задается комбинированный режим работы с файлом.
Синтаксис
os.OpenFile(name, os.O_RDWR, perm)
Пример
Давайте откроем существующий файл для чтения и записи, прочитаем его содержимое и добавим новую строку:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("example.txt", os.O_RDWR, 0644)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
data := make([]byte, 100)
n, err := file.Read(data)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Read %d bytes: %s", n, data[:n])
_, err = file.WriteString("\nNew line")
if err != nil {
fmt.Println(err)
return
}
fmt.Println("Data written successfully")
}
Результат выполнения кода:
"Read 23 bytes: Existing file content"
"Data written successfully"
Пример
Давайте создадим новый файл и откроем его для чтения и записи с использованием комбинированных флагов:
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile(
"newfile.txt",
os.O_RDWR|os.O_CREATE|os.O_TRUNC,
0666,
)
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
_, err = file.WriteString("Hello, World!")
if err != nil {
fmt.Println(err)
return
}
data := make([]byte, 100)
n, err := file.Seek(0, 0)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Seek position: %d\n", n)
count, err := file.Read(data)
if err != nil {
fmt.Println(err)
return
}
fmt.Printf("Read content: %s", data[:count])
}
Результат выполнения кода:
"Seek position: 0"
"Read content: Hello, World!"
Смотрите также
-
константу
os.O_RDONLY,
которая открывает файл только для чтения -
константу
os.O_WRONLY,
которая открывает файл только для записи -
константу
os.O_CREATE,
которая создает файл, если он не существует -
функцию
os.OpenFile,
которая открывает файл с указанными флагами