36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# fs-write-stream-atomic
 | 
						|
 | 
						|
Like `fs.createWriteStream(...)`, but atomic.
 | 
						|
 | 
						|
Writes to a tmp file and does an atomic `fs.rename` to move it into
 | 
						|
place when it's done.
 | 
						|
 | 
						|
First rule of debugging: **It's always a race condition.**
 | 
						|
 | 
						|
## USAGE
 | 
						|
 | 
						|
```javascript
 | 
						|
var fsWriteStreamAtomic = require('fs-write-stream-atomic')
 | 
						|
// options are optional.
 | 
						|
var write = fsWriteStreamAtomic('output.txt', options)
 | 
						|
var read = fs.createReadStream('input.txt')
 | 
						|
read.pipe(write)
 | 
						|
 | 
						|
// When the write stream emits a 'finish' or 'close' event,
 | 
						|
// you can be sure that it is moved into place, and contains
 | 
						|
// all the bytes that were written to it, even if something else
 | 
						|
// was writing to `output.txt` at the same time.
 | 
						|
```
 | 
						|
 | 
						|
### `fsWriteStreamAtomic(filename, [options])`
 | 
						|
 | 
						|
* `filename` {String} The file we want to write to
 | 
						|
* `options` {Object}
 | 
						|
  * `chown` {Object} User and group to set ownership after write
 | 
						|
    * `uid` {Number}
 | 
						|
    * `gid` {Number}
 | 
						|
  * `encoding` {String} default = 'utf8'
 | 
						|
  * `mode` {Number} default = `0666`
 | 
						|
  * `flags` {String} default = `'w'`
 | 
						|
 |