library("R.utils")
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, verbose=TRUE)
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, verbose=TRUE)
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")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.