$cordovaFile

cordova文件操作插件,访问该设备的文件和目录的插件。每个操作系统有一个不一样的文件系统布局



cordova plugin add cordova-plugin-file


文件系统布局

每个操作系统有一个不一样的文件系统布局,这里是一个详细的描述,iOS和Android的文件系统

ios文件系统布局

设备路径 cordova.file.* iosExtraFileSystems r/w?(读/写) persistent?(持久性) OS clears sync(同步) private(私有)
/var/mobile/Applications/UUID/ applicationStorageDirectory - r N/A N/A N/A Yes
 appname.app/ applicationDirectory bundle r N/A N/A N/A Yes
  www/ - - r N/A N/A N/A Yes
  Documents/ documentsDirectory documents r N/A No N/A Yes
  NoCloud/ - documents-nosync r/w Yes No No Yes
 Library/ - library r/w Yes No Yes Yes
  NoCloud/ dataDirectory library-nosync r/w Yes No No Yes
  Cloud/ syncedDataDirectory - r/w Yes No Yes Yes
  Caches/ cacheDirectory cache r/w Yes No No Yes
 tmp/ tempDirectory - r/w No No Yes Yes

android文件系统布局

设备路径 cordova.file.* AndroidExtraFileSystems r/w?(读/写) persistent?(持久性) OS clears private(私有)
file:///android_asset/ applicationDirectory r N/A N/A Yes
/data/data/app-id/ applicationStorageDirectory - r/w N/A N/A Yes
 cache cacheDirectory cache r/w Yes Yes* Yes
 files dataDirectory files r/w Yes No Yes
  Documents documents r/w Yes No Yes
sdcard/ externalRootDirectory sdcard r/w Yes No No
 Android/data/app-id/ externalApplicationStorageDirectory - r/w Yes No No
  cache externalCacheDirectory cache-external r/w Yes No** No
  files externalDataDirectory files-external r/w Yes No** No

提示

如果外部存储不能安装,cordova.file.external*属性为空。

文件错误代码 (File Error Codes)

当抛出错误时,将使用下列代码之一。

代码(Codes) 常量
1 NOT_FOUND_ERR
2 SECURITY_ERR
3 ABORT_ERR
4 NOT_READABLE_ERR
5 ENCODING_ERR
6 NO_MODIFICATION_ALLOWED_ERR
7 INVALID_STATE_ERR
8 SYNTAX_ERR
9 INVALID_MODIFICATION_ERR
10 QUOTA_EXCEEDED_ERR
11 TYPE_MISMATCH_ERR
12 PATH_EXISTS_ERR

方法(Methods)

getFreeDiskSpace()

获取设备磁盘总空闲空间

参数 类型 默认直 说明

返回值 String

checkDir(path, directory)

检测某路径的文件目录是否存在

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
directory String 检查的目录名称

返回值 Object

checkFile(path, file)

检测某路径中的文件是否存在

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 检查的文件路径

返回值 Object

createDir(path, directory, replace)

在特定路径中创建一个新目录。replace boolean参数确定是否以相同的名称替换已存在的目录。如果存在目录存在且替换值为false,则承诺将失败并返回一个错误。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
directory String 创建目录名称
replace Boolean 如果为true替换目录,如果为false有相同名称的文件时,返回一个错误

返回值 Object

createFile(path, file, replace)

在特定路径中创建一个新文件。replace boolean 参数确定是否以相同的名称替换已存在的文件。如果存在的文件存在且替换值是错误的,则该承诺将失败并返回一个错误。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 创建文件名称
replace Boolean 如果为true替换目录,如果为false有相同名称的文件时,返回一个错误

返回值 Object

removeFile(path, file)

从所需的位置删除一个文件。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 删除文件名称

返回值 Object

removeDir(path, directory)

从所需的位置删除一个目录。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 删除目录名称

返回值 Object

removeRecursively(path, directory)

从所需的位置删除所有文件和目录。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
directory String 删除目录名称

返回值 Object

writeFile(path, file, data, replace)

写入一个新文件,如果需要的话,可以替换。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 写入文件名称
data String Text/data 写入文件的数据
replace String 如果为true替换文件,如果为false有相同名称的文件时,返回一个错误

返回值 Object

writeExistingFile(path, file, data)

写入一个存在的文件。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 写入文件名称
data String Text/data 写入文件的数据

返回值 Object

readAsText(path, file)

readAsDataURL(path, file)
readAsBinaryString(path, file)
readAsArrayBuffer(path, file)

在各种方法中读取文件。

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 读取文件名称

返回值 Object

moveDir(path, directory, newPath, newDirectory)

移动一个目录

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
directory String 移动目录名称
newPath String 新位置的基文件系统请参考以上的iOS和Android的文件系统
newDirectory String 新目录名称

返回值 Object

moveFile(path, file, newPath, newFile)

移动一个文件

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 移动文件名称
newPath String 新位置的基文件系统请参考以上的iOS和Android的文件系统
newFile String 新文件名称

返回值 Object

copyDir(path, directory, newPath, newDirectory)

复制一个目录

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
directory String 复制目录名称
newPath String 新位置的基文件系统请参考以上的iOS和Android的文件系统
newDirectory String 新目录名称

返回值 Object

copyFile(path, file, newPath, newFile)

复制一个文件

参数 类型 说明
path FileSystem 基本文件系统。请参考以上的iOS和Android的文件系统
file String 复制文件名称
newPath String 新位置的基文件系统请参考以上的iOS和Android的文件系统
newFile String 新文件名称

返回值 Object

代码实例

module.controller('MyCtrl', function($scope, $cordovaFile) {

  document.addEventListener('deviceready', function () {

    $cordovaFile.getFreeDiskSpace()
      .then(function (success) {
         // success in kilobytes
      }, function (error) {
          // error
      });


    // CHECK
    $cordovaFile.checkDir(cordova.file.dataDirectory, "dir/other_dir")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    $cordovaFile.checkFile(cordova.file.dataDirectory, "some_file.txt")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    // CREATE
    $cordovaFile.createDir(cordova.file.dataDirectory, "new_dir", false)
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

    $cordovaFile.createFile(cordova.file.dataDirectory, "new_file.txt", true)
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    // REMOVE
    $cordovaFile.removeDir(cordova.file.dataDirectory, "some_dir")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

    $cordovaFile.removeFile(cordova.file.dataDirectory, "some_file.txt")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

    $cordovaFile.removeRecursively(cordova.file.dataDirectory, "")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    // WRITE
    $cordovaFile.writeFile(cordova.file.dataDirectory, "file.txt", "text", true)
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

    $cordovaFile.writeExistingFile(cordova.file.dataDirectory, "file.txt", "text")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    // READ
    $cordovaFile.readAsText(cordova.file.dataDirectory, $scope.inputs.readFile)
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    // MOVE
    $cordovaFile.moveDir(cordova.file.dataDirectory, "dir", cordova.file.tempDirectory, "new_dir")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

    $cordovaFile.moveFile(cordova.file.dataDirectory, "file.txt", cordova.file.tempDirectory)
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


    // COPY
    $cordovaFile.copyDir(cordova.file.dataDirectory, "dir", cordova.file.tempDirectory, "new_dir")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

    $cordovaFile.copyFile(cordova.file.dataDirectory, "file.txt", cordova.file.tempDirectory, "new_file.txt")
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });


  });

});