Documentation
¶
Overview ¶
Package atomicwriter provides utilities to perform atomic writes to a file or set of files.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func New ¶
New returns a WriteCloser so that writing to it writes to a temporary file and closing it atomically changes the temporary file to destination path. Writing and closing concurrently is not allowed. NOTE: umask is not considered for the file's permissions.
New uses sequential.CreateTemp to use sequential file access on Windows, avoiding depleting the standby list un-necessarily. On Linux, this equates to a regular os.CreateTemp. Refer to the Win32 API documentation for details on sequential file access.
func WriteFile ¶
WriteFile atomically writes data to a file named by filename and with the specified permission bits. The given filename is created if it does not exist, but the destination directory must exist. It can be used as a drop-in replacement for os.WriteFile, but currently does not allow the destination path to be a symlink. WriteFile is implemented using New for its implementation.
NOTE: umask is not considered for the file's permissions.
Types ¶
type WriteSet ¶
type WriteSet struct {
// contains filtered or unexported fields
}
WriteSet is used to atomically write a set of files and ensure they are visible at the same time. Must be committed to a new directory.
func NewWriteSet ¶
NewWriteSet creates a new atomic write set to atomically create a set of files. The given directory is used as the base directory for storing files before commit. If no temporary directory is given the system default is used.
func (*WriteSet) Commit ¶
Commit moves all created files to the target directory. The target directory must not exist and the parent of the target directory must exist.
func (*WriteSet) FileWriter ¶
FileWriter opens a file writer inside the set. The file should be synced and closed before calling commit.
FileWriter uses sequential.OpenFile to use sequential file access on Windows, avoiding depleting the standby list un-necessarily. On Linux, this equates to a regular os.OpenFile. Refer to the Win32 API documentation for details on sequential file access.