Generates a closure that writes binary (raw) data to a file.
file_writer(path, append = FALSE)
Function with signature writer(data = raw(), close = FALSE)
The writer function automatically opens the file on the first write and closes when
it goes out of scope, or explicitly by setting close = TRUE
. This can be used
for the data
callback in multi_add()
or curl_fetch_multi()
such
that we only keep open file handles for active downloads. This prevents running out
of file descriptors when performing thousands of concurrent requests.
# Doesn't open yet
tmp <- tempfile()
writer <- file_writer(tmp)
# Now it opens
writer(charToRaw("Hello!\n"))
#> [1] 7
writer(charToRaw("How are you?\n"))
#> [1] 13
# Close it!
writer(charToRaw("All done!\n"), close = TRUE)
#> [1] 10
# Check it worked
readLines(tmp)
#> [1] "Hello!" "How are you?" "All done!"