Appends a temporary suffix to the pathname
Appends a temporary suffix to the pathname and, optionally, renames an existing file accordingly.
In combination with popTemporaryFile
(), this method is useful
for creating a file/writing data to file atomically, by
first writing to a temporary file which is the renamed. If for
some reason the generation of the file was interrupted, for instance
by a user interrupt or a power failure, then it is only the temporary
file that is incomplete.
## Default S3 method: pushTemporaryFile(filename, path=NULL, suffix=".tmp", isFile=FALSE, ..., verbose=FALSE)
Returns the pathname with the suffix appended.
Henrik Bengtsson
createAtomically <- function(pathname, ...) { cat("Pathname: ", pathname, "\n", sep=""); # Generate a file atomically, i.e. the file will either be # complete or not created at all. If interrupted while # writing, only a temporary file will exist/remain. pathnameT <- pushTemporaryFile(pathname); cat("Temporary pathname: ", pathnameT, "\n", sep=""); cat(file=pathnameT, "This file was created atomically:\n"); for (kk in 1:10) { cat(file=pathnameT, kk, "\n", append=TRUE); # Emulate a slow process if (interactive()) Sys.sleep(0.1) } cat(file=pathnameT, "END OF FILE\n", append=TRUE); # Rename the temporary file pathname <- popTemporaryFile(pathnameT); pathname; } # createAtomically() pathname <- tempfile(); tryCatch({ # Try to interrupt the process while writing... pathname <- createAtomically(pathname); }, interrupt=function(intr) { str(intr); }) # ...and this will throw an exception bfr <- readLines(pathname); cat(bfr, sep="\n");
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.