【问题标题】:Using cordova-plugin-file to copy SQLite database cordova-sqlite-storage in Windows 10在 Windows 10 中使用 cordova-plugin-file 复制 SQLite 数据库 cordova-sqlite-storage
【发布时间】:2018-03-17 20:39:05
【问题描述】:

我需要一些有关 cordova-plugin-file 的帮助来备份 Windows 10 应用程序中的 cordova-sqlite-storage 使用的数据库。 我的代码在 Android 平台上运行良好。数据库可以双向复制(备份和恢复)。 该应用使用的数据库似乎如下:

C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db

App 尝试使用此位置定位文件,但未找到:

ms-appx:///databases/sample.db

我如何为 Windows 找到正确的位置来复制文件?

这是我用来复制文件的代码:

backupDatabase(name: string): Promise {

return new Promise<boolean>((resolve, reject) => 
{
  var fileName: string = window.cordova.file.applicationStorageDirectory + 'databases/' + name;
  var directoryName: string = window.cordova.file.externalRootDirectory;

  window.resolveLocalFileSystemURL(fileName, (file: FileEntry) => {
    console.log('[!] Database exists: ' + fileName);
    console.log('[!] Storage: ' + directoryName);
    window.resolveLocalFileSystemURL(directoryName, (directory: DirectoryEntry) => {
      console.log('[!] Directory: ' + directory.toURL());
      directory.getDirectory("Backup", {create: true, exclusive: false}, (directoryBackup: DirectoryEntry) => {
        console.log('[!] Directory: ' + directoryBackup.toURL());
        file.copyTo(directoryBackup, name, (copiedFile: Entry) => {
          console.log('[!] Copy success');
          resolve(true);
        }, (error: FileError) => {
          console.log('[!] Copy failed: ' + error.code);
          reject(error);
        });
      }, (error: FileError) => {
        console.log('[!] Backup Directory not found: ' + directoryName + 'Backup' + ' errorcode: ' +  + error.code);
        reject(error);
      })
    }, (error: FileError) => {
      console.log('[!] Directory not found: ' + directoryName + ' errorcode: ' +  + error.code);
      reject(error);
    }); 
  }, (error: FileError) => {
      console.log('[!] Database not found: ' + fileName + ' errorcode: ' +  + error.code);
      reject(error);
  });
});

【问题讨论】:

    标签: android cordova windows-10-universal cordova-plugin-file cordova-sqlite-storage


    【解决方案1】:

    App 尝试使用此位置定位文件,但未找到:

    ms-appx:///databases/sample.db

    我如何为 Windows 找到正确的位置来复制文件?

    您使用了错误的方案ms-appx:/// 指的是package installed location

    对于C:\Users\myuser\AppData\Local\Packages\io.cordova.hellocordova_h35559jr9hy9m\LocalState\sample.db

    你需要使用ms-appdata:///local/sample.db

    【讨论】:

    • window.cordova.file.dataDirectory + 'sample.db';工作正常!谢谢 :-)
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2014-12-29
    • 2016-08-03
    • 2017-09-01
    • 1970-01-01
    • 2023-03-17
    • 2021-03-15
    • 2016-11-02
    相关资源
    最近更新 更多