首页 > 学院 > 开发设计 > 正文

cordova-plugin-file 文件操作整理(二)

2019-11-07 23:29:25
字体:
来源:转载
供稿:网友

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 设备震动整理


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表