Cordove File实例Demo
一、cordova.file获取系统目录
//当前程序的目录console.info(cordova.file.applicationDirectory);//程序的数据目录console.info(cordova.file.applicationStorageDirectory);//程序的数据目录console.info(cordova.file.dataDirectory);//程序的暂存目录console.info(cordova.file.cacheDirectory);//Android扩展存储应用目录console.info(cordova.file.externalApplicationStorageDirectory);//Android扩展存储数据目录console.info(cordova.file.externalDataDirectory);//Android扩展存储缓存目录console.info(cordova.file.externalCacheDirectory);//Android扩展根目录console.info(cordova.file.tempDirectory);/**iOS中的目录**///临时目录console.info(cordova.file.tempDirectory);//云存储目录console.info(cordova.file.syncedDataDirectory);//文档目录console.info(cordova.file.documentsDirectory);//共享目录console.info(cordova.file.sharedDirectory);Android下目录输出//file:///android_asset///file:///data/data/io.cordova.myapp84ea27///file:///data/data/io.cordova.myapp84ea27/files///file:///data/data/io.cordova.myapp84ea27/cache///file:///storage/emulated/0/Android/data/io.cordova.myapp84ea27///file:///storage/emulated/0/Android/data/io.cordova.myapp84ea27/files///file:///storage/emulated/0/Android/data/io.cordova.myapp84ea27/cache/二、沙盒模式下直接操作
window.requestFileSystem(type, size, successCB,errorCB),请求获取配额,在插件中不需要使用requestquota
1.创建文件
//创建文件window.requestFileSystem(LocalFileSystem.PERSISTENT, 1024 * 1024, function (fs) { console.log('file system open:' + fs.name); console.info(fs); fs.root.getFile('test1.txt', { create: true, exclusive: false }, function (fileEntity) { console.info(fileEntity); console.log('文件地址:' + fileEntity.toURL()); //file:///data/data/io.cordova.myapp84ea27/files/files/test1.txt // fileEntry.name == 'someFile.txt' // fileEntry.fullPath == '/someFile.txt' writeFile(fileEntity, "中文内容"); });});2.写入文件
//写入文件function writeFile(fileEntry, dataObj) { fileEntry.createWriter(function (fileWriter) { //写入结束 fileWriter.onwriteend = function () { console.log('写入文件成功'); //读取内容 readFile(fileEntry); } fileWriter.onerror = function (e) { console.log('写入文件失败:' + e.toString()); } if (!dataObj) { dataObj = new Blob(['some file data'], { type: 'text/plain' }); } fileWriter.write(dataObj); });}3.读取文件
//读取文件内容function readFile(fileEntry) { fileEntry.file(function (file) { var reader = new FileReader(); reader.onloadend = function () { console.log('读取文件成功:' + reader.result); //显示文件 console.info(fileEntry.fullPath); } reader.readAsText(file); }, function (err) { console.info('读取文件失败'); });}4.下载图片,并显示
下载:
window.requestFileSystem(window.PERSISTENT, 5 * 1024 * 1024, function (fs) { getSampleFile(fs.root);}, errorHandle)function getSampleFile(dirEntry) { console.info(dirEntry); //1.请求png 图片 var xhr = new xmlHttPRequest(); xhr.open('GET', 'http://cordova.apache.org/static/img/cordova_bot.png', true); xhr.responseType = 'blob'; xhr.onload = function () { if (this.status == 200) { var blob = new Blob([this.response], { type: 'image/png' }); //保存 saveFile(dirEntry, blob, 'downloadImage.png'); } } xhr.send();}保存:
//保存到本地function saveFile(dirEntry, blob, filename) { console.info(blob); //创建文件 dirEntry.getFile(filename, { create: true }, function (fileEntry) { fileEntry.createWriter(function (fileWriter) { fileWriter.onwriteend = function () { console.log('写入文件成功'); if (blob.type == 'image/png') { readBinaryFile(fileEntry); } else { console.error(blob); } } fileWriter.onerror = function (err) { console.error('写入文件失败:' + err.toString()); } fileWriter.write(blob); }); }, errorHandle);}读取、显示:fileEntry.toURL() 可以直接作为src显示。
//读取二进制文件function readBinaryFile(fileEntry) { fileEntry.file(function (file) { var reader = new FileReader(); reader.onloadend = function () { //显示图片文件 console.info(fileEntry.fullPath + ':' + reader.result); var blob = new Blob([new Uint8Array(reader.result)], { type: 'image/png' }); $scope.imgOne = window.URL.createObjectURL(blob); $scope.$apply(); } reader.readAsArrayBuffer(file); }, errorHandle); //直接显示图片 $scope.imgTwo = fileEntry.toURL(); $scope.$apply();}5.读取文件夹中内容:
//显示根目录内容window.requestFileSystem(LocalFileSystem.PERSISTENT, 1024 * 1024, function (fs) { //显示根目录下的内容 var dirReader = fs.root.createReader(); var entries = []; var readEntries = function () { //DirectoryReader.readEntries() 方法一次读取内容的个数不一定 //返回FileEntry数组 dirReader.readEntries(function (results) { if (!results.length) { showEntries(entries.sort()); } else { entries = entries.concat(toArray(results)); readEntries(); } }, errorHandler); } readEntries();});function errorHandler(err) { console.info(err);}function toArray(list) { return Array.prototype.slice.call(list || [], 0);}//显示读取结果function showEntries(entries) { console.info(entries);}更多:cordova-plugin-file 文件操作整理(一)
Apache Cordova开发环境搭建(二)VS Code
cordova-plugin-vibration 设备震动整理
新闻热点
疑难解答