fabl

File Abstraction Layer

FABL - File Abstraction Layer

Install via npm

$ npm install fabl

Require it:

var File = require( 'fabl' )

Creating a file:

// Synchronous 
var file = File.create( 'README.md' )
// Sync, with mode 
var file = File.create( 'README.md', 0666 )
// Async, with mode and callback (mode is optional) 
var file = File.create( 'README.md', 0666, function( error ) {
  // ... 
})

Checking existance of a file:

File.exists( 'schrödingers.cat' )
File.exists( 'schrödingers.cat', function( errorexists ) {
  // ... 
})

Stat a file:

File.stat( 'schrödingers.cat' )
File.stat( 'schrödingers.cat', function( errorstats ) {
  // ... 
})

Renaming a file:

// Rename and move are synonym 
File.move( 'rain.txt', 'trash.txt' )
File.rename( 'junk.food', 'trash.txt', function( error ) {
  // ... 
})

Truncating/Allocating a file:

// Truncate and allocate are aliases, 
// Size is optional, defaults to zero 
File.truncate( 'trash.txt' )
File.allocate( 'random.mp3', 0x5000, function( error ) {
  // ... 
})

Deleting a file:

// Delete and unlink are aliases 
File.delete( 'trash.txt' )
File.unlink( 'trash.txt', function( error ) {
  // ... 
})

Creating a file:

// Create an instance with a given path 
var file = new File( 'README.md' )
// Sync create 
file.create() // OR 
file.create( function( error ) {
  // ... 
})

Opening a file:

// Sync open, with defaults 
// Flags default to 'r+', or previously used flags 
// Mode defaults to whatever node defaults to (0666) 
file.open() // OR 
file.open( 'w' ) // OR 
file.open( 'rs+', 0700 ) // OR 
file.open( function( errorfd ) {
  // ... 
})

Closing a file:

file.close()
file.close( function( error ) {
  // ... 
})

Deleting a file:

file.delete() // OR 
file.delete( function( error ) {
  // ... 
})

Renaming/Moving a file:

// Rename and Move are aliases 
file.rename( 'READMORE.md' )
file.move( 'EVENMORE.md' )
file.rename( 'HAHAHA.md', function( error ) {
  // ... 
})

Truncating/Allocating a file:

// Truncate and Allocate are aliases as well 
// Size is optional, defaults to zero 
file.allocate( 265 * 1024 )
file.truncate( function( error ) {
  // ... 
})

Stat'ing a file:

var stat = file.stat()
file.stat( function( errorstats ) {
  // ... 
})

Reading from a file:

// Read a chunk synchronously 
var data = file.read( offset, length )
// Offset can be omitted, and defaults to zero 
file.read( 3000, function( errorbytesReaddata ) {
  // ... 
})
// Create a readable stream 
var stream = file.readStream()
// With boundaries 
var bound = file.readStream( start, end )
// And / or with options 
var optstream = file.readStream( start, {
  highWaterMark: 0x2000
})

Writing to a file:

// Write data synchronously 
var bytesWritten = file.write( 'NOOOOOOO!' )
// Add an offset (the length is determined by 
// the bytelength of data (it's converted to a Buffer)) 
file.write( milk, 0xC0FFEE, function( errorbytesWrittenbuffer ) {
  // ... 
})
// Or create a writable stream, which has 
// the same options as the readStream() above 
var stream = file.writeStream()