Sobes.tech
Senior

How to use the suffix mechanism (temporary files) to ensure atomicity of writing?

sobes.tech AI

Answer from AI

The suffix mechanism for temporary files is used to ensure atomicity of data writing to disk. The idea is as follows:

  1. First, write data to a temporary file with a suffix, for example, file.txt.tmp.
  2. After successful writing and closing of the temporary file, perform an atomic rename operation to change the temporary file to the target file file.txt.

Renaming is an atomic operation in most file systems, meaning that at any given moment, either the old file or the new file exists, but not an intermediate state.

Example in Java:

import java.nio.file.*;

Path target = Paths.get("file.txt");
Path temp = Paths.get("file.txt.tmp");

// Write to temporary file
Files.writeString(temp, "data");

// Atomic rename
Files.move(temp, target, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.ATOMIC_MOVE);

Thus, if the write process is interrupted, the main file remains unchanged, and the temporary file can be deleted or overwritten on the next attempt.

How to use the suffix mechanism (temporary files) to… - sobes.tech