git ssb

0+

Dominic / atomic-file



Tree: e95ec6716fb1a5b78058ee1150877a432bd6a457

Files: e95ec6716fb1a5b78058ee1150877a432bd6a457 / README.md

807 bytesRaw

atomic-file

store data in a file, but gaurantee there is never a partial write.

This uses a simple trick to make writes to the file system atomic: first write the file to {filename}~, then mv {filename}~ {filename}
although it's possible a program to crash while it's part way through writing a file, the rename operation (mv) can only either succeed or fail.

var AtomicFile = require('atomic-file') //default, json encoding
// var AtomicFile = require('atomic-file/buffer') //binary

var af = AtomicFile(filename)
//get the current contents
af.get(function (err, value) {
  //write a new value
  af.set(value, function (err) {

  })
})

note, get stores the read value in memory, so subsequent calls to get will be instant. Successful writes will update the value.

License

MIT

Built with git-ssb-web