@hoge1e3/fs
v1.0.9
Published
File system in browser using localStorage.
Downloads
52
Maintainers
Readme
@hoge1e3/fs
File System for Browser using localStorage.
Build
npm install
npm run build
Test
npm run test
If "All test Passed." is shown, the test is succeeded.
Example
FS.get
method returns a File Object which can access to localStorage.
(See ./example.html)
<script src="path/to/FS.js"></script>
<script>
var mydir=FS.get("/mydir/");// Directory in localStorage
var myfile=mydir.rel("myfile.txt"); // File in localStorage (/mydir/myfile.txt)
myfile.text("my content"); // write file
console.log(myfile.text()); // read file
for (let f of mydir.listFiles()) { // list files in mydir
console.log(f.name());
}
</script>
Quick Reference of File Object
- File Object can be get by calling
FS.get(path)
. - In the methods listed below,
f
andd
is a File Object which represents a file and directory respectively.fd
can be either file or directory. - If filepath or filename represents directory,
/
MUST be present at last of filepath or filename
f.text(str)
writestr
to the filef.text()
returns file content of the file in stringf.obj(o)
write objecto
in JSON to the filef.obj()
returns the file content as object. The content of the file should be written in JSONf.bytes(b)
write ArrayBuffer/Buffer(node) to the filef.bytes()
returns file content as ArrayBuffer(browser)/Buffer(node)f.getBytes({binType:ArrayBuffer})
returns file content as ArrayBuffer(both in browser and node)d.each(func)
iterates over the directory by passing each File Object tofunc
d.recursive(func)
iterates over all files in the directory and its subdirectory by passing each File Object tofunc
d.recursive()
returns Generator which iterates over all files in the directory and its subdirectory.d.listFiles()
returns array of File Objects which represents all files in the directoryd.ls()
returns array of names of all files in the directoryd.rel(relPath)
returns new File Object specified by the relative pathfd.relPath(base)
returns the relative path of the file from thebase
File Object.fd.up()
returns new File Object which is parent of the file/directory.fd.sibling(name)
same asfd.up().rel(name)
.fd.path()
returns the full path of the file/directory.fd.name()
returns the name of the file/directory.fd.ext()
returns the extention of the file/directory.fd.truncExt(e)
returns the name removinge
(whene
is omitted,e
equals tofd.ext()
)f.lastUpdate()
return the file's time stamp as the number corrensponding to the value of Date.getTimef.rm()
removes the filed.rm()
removes the directory if it is empty.d.rm({r:true})
removes the directory and all subfiles/subdirectories.fd.exists()
checks whether the file/directory exists.fd.isDir()
checks whether the File Object is directory.f.copyFrom(src)
copies from src(File Object) to the file.- If
src
is a directory. It is same ascp -R src/* f/*
in unix command. NOTcp src/ f/
.
- If
f.copyTo(dst)
copies the file to dst(File Object).- It is same as
cp -R f/* dst/*
, NOTcp f/ dst/
.
- It is same as
f.moveFrom(src)
moves from src(File Object) to the file.f.moveTo(dst)
moves the file to dst(File Object).d.mkdir()
creates the directory.
Use of RAM disk
You can also use RAM disk to store temporal data to memory, that is destroyed when leaving the page.
FS.mount("/tmp/",FS.LSFS.ramDisk());
After that the path beginning with /tmp/
is stored in memory.
Representation of files in localStorage
- The key represents the full path of a file.
- The value represents the file content in string
- If the file is a binary file, it is stored in data url.
- Whether the file is binary or text is determined by extension of the file
src/MIMETypes.js
maps extension to content types. If content type is "text/....", it is regarded as text file
- The key of a directory entry always ends with /
- The value is a JSON with file list and attributes(lastUpdate).