今天写一下ngCordova插件中File插件的使用
虽然JavaScript也有自己操作文件的方法(FileSystemObject类),但是由于Android和IOS的文件目录结构不同,操作文件不如用封装好方法的File插件方便。
插件安装:cordova plugin add org.apache.cordova.file
插件安装完成后,我们要了解Android和IOS在Cordova中的系统目录是什么样的
IOS系统的目录结构
Android系统的目录结构
通过上面的目录结构我们可以按照左侧的Device Path比对出cordova的相对的目录名称。举例说明,在IOS系统中的Device Path为"/var/mobile/Applications/<UUID>/",那么cordova的目录就是cordova.file.applicationStorageDirectory;在Android系统中的"<sdcard>/"也就是Android的sdcard根目录,cordova的目录是cordova.file.externalRootDirectory,比照着目录结构,我们可以把我们想要的存储目录结构转化为cordova的目录。
方法说明:
- getFreeDiskSpace()
拿到设备上空的存储空间
用法:
$cordovaFile.getFreeDiskSpace()
.then(function (success) {
// success in kilobytes
}, function (error) {
// error
});
- checkDir(path, directory)
检查在具体的路径中是否存在某个文件夹
path为cordova的目录结构,directory为所检查的文件夹
用法:
$cordovaFile.checkDir(cordova.file.dataDirectory, "newdir")
.then(function (success) {
// success
}, function (error) {
// error
alert(angular.toJson(error));
});
上面的代码就是在检查在Android中的"files/"路径下或IOS中的"NoCloud/"路径下检查是否存在一个叫做"newdir"的文件夹
若存在则进入function(success){}中,若不存在则进入function(error){}中,由于error是一个Object类的对象,所以要转换成Json数据再打印,此时打印出的error就是未找到文件夹的错误信息码
- createDir(path, directory, replace)
在具体路径中创建某个文件夹
path为cordova的目录结构,directory为建立文件夹名称,replace为布尔型值,若为true则覆盖同名文件夹,若为false则不覆盖
用法:
$cordovaFile.createDir(cordova.file.dataDirectory, "newdir", false)
.then(function (success) {
// success
}, function (error) {
// error
});
以上代码就是在Android中的"files/"路径下或IOS中的"NoCloud/"路径下创建叫做"newdir"的文件夹,且不可覆盖同名文件夹
- checkFile(path, file)
在具体路径检查某个文件是否存在
path为cordova的目录结构,directory为所检查的文件名称
$cordovaFile.checkFile(cordova.file.dataDirectory, "thedir/file.txt")
.then(function (success) {
// success
}, function (error) {
// error
});
用法整体和checkDir()相似,这里要说的是,checkDir()方法和checkFile方法中的directory参数,这个参数可以是一个路径,以上面代码为例,就是检查Android中的"files/"路径下或IOS中的"NoCloud/"路径下是否有一个在thedir文件夹下的file.txt文件,找到进入success,找不到进入error
- createFile(path, file, replace)
在指定路径创建某文件
整体用法参照createDir()
$cordovaFile.removeFile(cordova.file.dataDirectory, "some_file.txt")
.then(function (success) {
// success
}, function (error) {
// error
});
- removeRecursively(path, directory)
在指定路径删除包括文件夹和文件夹下的所有文件
根据参数,用法和前面类似
$cordovaFile.removeRecursively(cordova.file.dataDirectory, "")
.then(function (success) {
// success
}, function (error) {
// error
});
- removeDir(path, directory)
在指定路径删除某文件夹
$cordovaFile.removeDir(cordova.file.dataDirectory, "some_dir")
.then(function (success) {
// success
}, function (error) {
// error
});
- removeFile(path, file)
在指定路径删除某文件
$cordovaFile.removeFile(cordova.file.dataDirectory, "some_file.txt")
.then(function (success) {
// success
}, function (error) {
// error
});
- writeFile(path, file, data, replace)
在指定路径向文件中写数据,data参数可以是text或data,相当于直接创建一个写了数据的文件
$cordovaFile.writeFile(cordova.file.dataDirectory, "file.txt", "text", true)
.then(function (success) {
// success
}, function (error) {
// error
});
- writeExistingFile(path, file, data)
在指定路径下向一个已经存在的文件写数据,写入数据为text或data
$cordovaFile.writeExistingFile(cordova.file.dataDirectory, "file.txt", "text")
.then(function (success) {
// success
}, function (error) {
// error
});
通过上面说的这些方法,可以知道File插件的方法的使用模式,下面的方法与上面用法类似,不再详细说明
- readAsText(path, file)
以文本的方式读文件
- readAsDataURL(path, file)
以数据Url的形式读文件
- readAsBinaryString(path, file)
以二进制字符串的形式读文件
- readAsArrayBuffer(path, file)
以数组buffer的形式读文件
- moveDir(path, directory, newPath, newDirectory)
将文件夹从旧路径移动到新路径,其中newPath为新路径,newDirectory为新名称
- moveFile(path, file, newPath, newFile)
将文件从旧路径移动到新路径
- copyDir(path, directory, newPath, newDirectory)
将文件夹复制到新路径
- copyFile(path, file, newPath, newFile)
将文件复制到新路径
以上就是ngCordova插件中File插件的使用方法