Метод os.File.Sync
Метод os.File.Sync принудительно записывает все буферизированные данные файла
на диск. Это гарантирует, что данные, записанные в файл, физически сохранены
на постоянном носителе, а не находятся в буферах операционной системы.
Метод вызывается для объекта файла, полученного при открытии или создании файла.
Он возвращает ошибку, если операция синхронизации не удалась.
Синтаксис
err := file.Sync()
Пример
Давайте откроем файл, запишем в него данные и принудительно сбросим их на диск:
package main
import (
"fmt"
"os"
)
func main() {
// Create or open file for writing
file, err := os.Create("example.txt")
if err != nil {
fmt.Println("Error creating file:", err)
return
}
defer file.Close()
// Write data to file
_, err = file.WriteString("Hello, World!")
if err != nil {
fmt.Println("Error writing to file:", err)
return
}
// Flush buffered data to disk
err = file.Sync()
if err != nil {
fmt.Println("Error syncing file:", err)
return
}
fmt.Println("Data successfully written and synced to disk")
}
Результат выполнения кода:
"Data successfully written and synced to disk"
Пример
Покажем ситуацию, когда синхронизация завершается с ошибкой, например, при попытке синхронизации файла, который уже закрыт:
package main
import (
"fmt"
"os"
)
func main() {
// Create a file
file, err := os.Create("test.txt")
if err != nil {
fmt.Println("Error creating file:", err)
return
}
// Write some data
_, err = file.WriteString("some data")
if err != nil {
fmt.Println("Error writing to file:", err)
return
}
// Close the file
err = file.Close()
if err != nil {
fmt.Println("Error closing file:", err)
return
}
// Try to sync the closed file
err = file.Sync()
if err != nil {
fmt.Println("Sync error:", err)
return
}
fmt.Println("Sync successful")
}
Результат выполнения кода:
"Sync error: file already closed"
Смотрите также
-
метод
os.File.Close,
который закрывает файл и освобождает связанные с ним ресурсы -
функцию
os.WriteFile,
которая записывает данные в файл и автоматически синхронизирует его -
функцию
os.Create,
которая создает файл для записи -
метод
os.File.WriteString,
который записывает строку в файл