The file system API that this project is based on has been deprecated, and is no longer supported by most major browsers. This repository exists for archival purposes only.
FSO.js is a JavaScript FileSystemObject library for temporary and permanent client-side file storage.
This ReadMe serves as the official documentation for FSO.js.
For more in-depth information about the project, visit FSOjs.com.
Detailed example code is available at FSOjs - Examples.
Tweet the creator (me!) at @keithwhor
FSO can be included on any webpage using:
<script src="your_script_path/fso.min.js"></script>And a typical use case might be:
var fso = new FSO(1024 * 1024 * 1024, false); // Create 1GB of temp storage
var fsq = fso.createQueue();
// Queues process commands sequentially,
// prepare your queue like so:
fsq.mkdir('hello');
fsq.write('hello/world.txt', 'Hello World');
fsq.read('hello/world.txt', function(data) { console.log(data); });
// Finally, execute asynchronously.
fsq.execute();FSO
FSO(
opt_int_byteSize, [ = 1024 * 1024 * 1024 (1GB) ]
opt_bool_persisent, [ = false ]
opt_fn_successCallback,
opt_fn_errorCallback
)
The main FSO.js constructor
returns FSO instance
Instantiate using var fso = new FSO();
FSO.createQueue
createQueue()
[ returns new FSOQueue ]
returns new FSOQueue instance
FSO.toURL
toURL(
str_fullPath
)
[ returns str_resourceURL ]
returns a resource URL for specified fullPath
FSOQueue.write
write(
string_fullFilePath,
string_data OR arrayBuffer_data OR array_data,
opt_fn_successCallback
)
[ returns FSOQueue ]
Writes a file to an existing directory.
Creates files if they do not exist.
Truncates and overwrites existing files.
FSOQueue.append
append(
string_fullFilePath,
string_data OR arrayBuffer_data OR array_data,
opt_fn_successCallback
)
[ returns FSOQueue ]
Appends data to an existing file.
Creates files if they do not exist.
FSOQueue.insert
insert(
string_fullFilePath,
string_data OR arrayBuffer_data OR array_data,
int_byteOffset,
opt_fn_successCallback
)
[ returns FSOQueue ]
Inserts data to existing file at byteOffset.
Overwrites file data at byteOffset to data length.
Zeroes out all data between current file length and byteOffset.
Creates files if they do not exist.
FSOQueue.put
put(
file_File,
string_fullPath,
opt_string_name,
opt_fn_successCallback
)
[ returns FSOQueue ]
Places a File Object (i.e. result of file selection) at fullPath.
Will use given name if name not provided, or given a falsey value (i.e. empty string or null).
Overwrites existing files with the same name.
FSOQueue.mkdir
mkdir(
string_fullPath,
opt_fn_successCallback
)
[ returns FSOQueue ]
Recursively creates all directories in fullPath if they do not exist
FSOQueue.rm
rm(
string_fullPath,
opt_fn_successCallback
)
[ returns FSOQueue ]
Removes an existing file or empty directory at fullPath.
FSOQueue.rmdir
rmdir(
string_fullPath,
opt_fn_successCallback
)
[ returns FSOQueue ]
Recursively removes a directory (including contents) at fullPath.
FSOQueue.rename
rename(
string_fullPath,
string_name,
opt_fn_successCallback
)
[ returns FSOQueue ]
Renames file or directory at fullPath to name.
FSOQueue.move
move(
string_fullPath,
string_toPath,
opt_string_name,
opt_fn_successCallback
)
[ returns FSOQueue ]
Moves file or directory at fullPath to toPath with optional name name.
name will remain unchanged if provided with a falsey value.
FSOQueue.copy
copy(
string_fullPath,
string_toPath,
opt_string_name,
opt_fn_successCallback
)
[ returns FSOQueue ]
Copies file or directory at fullPath to toPath with optional name name.
name will remain unchanged if provided with a falsey value.
FSOQueue.read
read(
string_fullPath,
fn_successCallback [ arguments str_data ]
)
[ returns FSOQueue ]
Reads file at fullPath and returns data to first argument of successCallback.
FSOQueue.readBuffer
readBuffer(
string_fullPath,
fn_successCallback [ arguments arrayBuffer_data ]
)
[ returns FSOQueue ]
Reads file at fullPath and returns data to first argument of successCallback.
FSOQueue.info
info(
string_fullPath,
fn_successCallback [ arguments obj_fileData ]
)
[ returns FSOQueue ]
Reads file metadata at fullPath and returns fileData to first argument of successCallback.
FSOQueue.list
list(
string_fullPath,
int_depth,
fn_successCallback [ arguments obj_nestedList ]
)
[ returns FSOQueue ]
Reads directory contents of fullPath recursively to depth directories deep, and returns nestedList to first argument of successCallback.
If depth === null, will return full listing.
Use FSOUtil.prettyDirectory for quick nestedList prettification.
FSOQueue.getBytes
getBytes(
fn_successCallback [ arguments int_usedBytes, int_availableBytes ]
)
[ returns FSOQueue ]
Returns usedBytes, availableBytes to first two arguments of successCallback, respectively.
availableBytes represents the total available space, including usedBytes - not the remaining space.
FSOQueue.execute
execute(
opt_fn_successCallback,
opt_fn_errorCallback [ arguments obj_error ]
)
[ returns FSOQueue ]
Executes a queue, prevents new commands from being queued, and runs successCallback on queue completion.
errorCallback will override default error reporting and run on failure of any command in the queue.
A static object containing useful utilities
FSOUtil.prettyDirectory
prettyDirectory(
object_nestedList
)
[ returns str_prettyList ]
Returns a prettified (text) directory listing of nestedList
FSOUtil.prettySize
prettySize(
int_bytes
)
[ returns str_prettySize ]
Returns a prettified (text) size of bytes