参考书 Using the HTML5 Filesystem API.pdf
用Chrome打开网站: www.baidu.com
打开其JavaScrip控制台,输入此js(以后称脚本一)查看当前本地存储使用状况:
window.webkitStorageInfo.queryUsageAndQuota(TEMPORARY, function(usage, quota) { console.log('Using: ' + (usage / quota) * 100 + '% of temporary storage');}, function(e) { console.log('Error', e);});
接着执行
var fileEn;function onFs(fs) { fs.root.getFile('log.txt', {create: true, exclusive: true}, function(fileEntry) { // fileEntry.isFile === true // fileEntry.name == 'log.txt' // fileEntry.fullPath == '/log.txt' fileEn=fileEntry; console.log('FileEntry Name: ' + fileEntry.name); console.log('FileEntry FullPath: ' + fileEntry.fullPath); //fileEntry.getMetaData(function(md) { // console.log(md.modificationTime.toDateString()); //}, onError); }, onError );}//FileError constantsfunction onError(err) { var msg = 'Error: '; switch (err.code) { case FileError.NOT_FOUND_ERR: msg += 'File or directory not found'; break; case FileError.SECURITY_ERR: msg += 'Insecure or disallowed operation'; break; case FileError.ABORT_ERR: msg += 'Operation aborted'; break; case FileError.NOT_READABLE_ERR: msg += 'File or directory not readable'; break; case FileError.ENCODING_ERR: msg += 'Invalid encoding'; break; case FileError.NO_MODIFICATION_ALLOWED_ERR: msg += 'Cannot modify file or directory'; break; case FileError.INVALID_STATE_ERR: msg += 'Invalid state'; break; case FileError.SYNTAX_ERR: msg += 'Invalid line-ending specifier'; break; case FileError.INVALID_MODIFICATION_ERR: msg += 'Invalid modification'; break; case FileError.QUOTA_EXCEEDED_ERR: msg += 'Storage quota exceeded'; break; case FileError.TYPE_MISMATCH_ERR: msg += 'Invalid filetype'; break; case FileError.PATH_EXISTS_ERR: msg += 'File or directory already exists at specified path'; break; default: msg += 'Unknown Error'; break; }; console.log(msg);}window.webkitRequestFileSystem(TEMPORARY, 2*1024*1024 /*2MB*/, onFs, onError);
之后执行下列代码和 脚本一
console.dir(fileEn);
运行截图如下:
写入文件数据测试
var writeToFile=function(fileEntry) { // Create a FileWriter object for our FileEntry. fileEntry.createWriter(function(fileWriter) { fileWriter.onwrite = function(e) { console.log('Write completed.'); }; fileWriter.onerror = function(e) { console.log('Write failed: ' + e.toString()); }; var bb = new WebKitBlobBuilder(); // Create a new Blob on-the-fly. bb.append('Lorem Ipsum'); fileWriter.write(bb.getBlob('text/plain')); }, onError); }
输入 脚本一会发现占用的空间发生变化
读取文件
var reader;var readFromFile=function(fileEntry) { // Obtain the File object representing the FileEntry. // Use FileReader to read its contents. fileEntry.file(function(file) { reader = new FileReader(); reader.readAsText(file); // Read the file as plaintext. console.log(reader.result); }, onError); }
执行查看reader对象情况
console.dir(reader)