【问题标题】:How to write in file using FileSystem API with IBM Worklight?如何使用带有 IBM Worklight 的 FileSystem API 写入文件?
【发布时间】:2014-06-02 09:48:02
【问题描述】:

我正在使用带有 Worklight 的 HTML5 的 FileSystem API 创建缓存文件 JSON 格式,我创建到文件没有任何问题,问题是当我尝试向创建的文件添加一些文本时,我使用了 fileWriter 但它不写任何事物 。

这是我开发的更新功能:

function update(fileName){
        function onInitFs(fs) {

  fs.root.getFile(fileName, {create: true}, function(fileEntry) {

    // Create a FileWriter object for our FileEntry  .
    fileEntry.createWriter(function(fileWriter) {

      fileWriter.onwriteend = function(e) {
        console.log('Write completed.');
      };

      fileWriter.onerror = function(e) {
        console.log('Write failed: ' + e.toString());
      };

      // Create a new Blob and write it to log.txt.
      var blob = new Blob(['Lorem Ipsum'], {type: 'text/plain'});

      fileWriter.write(blob);

    }, errorHandler);

  }, errorHandler);

}

window.requestFileSystem(window.PERSISTENT, 1024*1024, onInitFs, errorHandler);
     function errorHandler(e) {
  var msg = '';
  switch (e.code) {
    case FileError.QUOTA_EXCEEDED_ERR:
      msg = 'QUOTA_EXCEEDED_ERR';
      break;
    case FileError.NOT_FOUND_ERR:
      msg = 'NOT_FOUND_ERR';
      break;
    case FileError.SECURITY_ERR:
      msg = 'SECURITY_ERR';
      break;
    case FileError.INVALID_MODIFICATION_ERR:
      msg = 'INVALID_MODIFICATION_ERR';
      break;
    case FileError.INVALID_STATE_ERR:
      msg = 'INVALID_STATE_ERR';
      break;
    default:
      msg = 'Unknown Error';
      break;
  };
  document.querySelector('#example-list-fs-ul').innerHTML = 'Error: ' + msg;
}
    }

这是显示文件内容的读取函数,它返回一个空白字符串:

function read(fileName){
    function onInitFs(fs) {

  fs.root.getFile(fileName, {}, function(fileEntry) {

    // Get a File object representing the file,
    // then use FileReader to read its contents.
    fileEntry.file(function(file) {
       var reader = new FileReader();

       reader.onloadend = function(e) {

         alert(this.result);

       };

       reader.readAsText(file);
    }, errorHandler);

  }, errorHandler);

}

window.requestFileSystem(window.PERSISTENT, 1024*1024, onInitFs, errorHandler);
}

任何人都知道如何解决这个问题以及如何成功地从文件中写入和读取?
谢谢你

【问题讨论】:

    标签: caching cordova ibm-mobilefirst browser-cache html5-filesystem


    【解决方案1】:

    我认为使用专为您要达到的目的而设计的一些 Worklight 功能会更好,例如:

    1. Encrypted cache
    2. JSONStore

    【讨论】:

      【解决方案2】:

      这是一个允许创建/编辑/读取/删除简单文本文件的示例。 希望这会有所帮助。

      <!DOCTYPE HTML>
      <html>
          <head>
              <meta charset="UTF-8">
              <title>CordovaApp</title>
              <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
              <!--
                  <link rel="shortcut icon" href="images/favicon.png">
                  <link rel="apple-touch-icon" href="images/apple-touch-icon.png"> 
              -->
              <link rel="stylesheet" href="css/main.css">
              <script>window.$ = window.jQuery = WLJQ;</script>
              <script type="text/javascript" charset="utf-8">
                  /**
                   * Function called when page has finished loading.
                   */
                  function init(){
                      console.log("onDeviceReady");
                  }
      
                  onWLReady = function() {
                      // Wait for PhoneGap to load
                      document.addEventListener("deviceready", init, false);
                  }
      
                  function createFile() {
                      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
                          function(fileSystem) {
                              fileSystem.root.getFile("readme.txt", {create: true, exclusive: false},
                                  function(fileEntry) {
                                      fileEntry.createWriter(
                                          function(writer) {
                                              writer.onwriteend = function(evt) {
                                                  log("File created...");
                                              };
                                              writer.onwritestart = function(evt){
                                                  log("onwritestart");
                                              };
                                              writer.onwrite = function(evt){
                                                  log("onwrite");
                                              };
                                              writer.onerror = function(evt){
                                                  log("onerror");
                                              };
                                              writer.write("File created at: " + new Date().toLocaleString());
                                          },
                                          fail);
                                  }
                                  , fail);
                          },
                          fail);
                  }
      
                  function editFile() {
                      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
                          function(fileSystem) {
                              fileSystem.root.getFile("readme.txt", {create: false, exclusive: false},
                                  function(fileEntry) {
                                      fileEntry.createWriter(
                                          function(writer) {
                                              writer.onwriteend = function(evt) {
                                                  log("File edited");
                                              };
                                              writer.onwritestart = function(evt){
                                                  log("onwritestart");
                                              };
                                              writer.onwrite = function(evt){
                                                  log("onwrite");
                                              };
                                              writer.onerror = function(evt){
                                                  log("onerror");
                                              };
                                              writer.seek(writer.length);
                                              writer.write("<br>File edited at: " + new Date().toLocaleString());
                                          },
                                          fail);
                                  }
                                  , fail);
                          },
                          fail);
                  }
      
                  function readFile() {
                      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
                          function(fileSystem) {
                              fileSystem.root.getFile("readme.txt", {
                                   create : false
                                  },
                                  function(fileEntry){
                                      fileEntry.file(function(file) {
                                          readDataUrl(file);
                                          readAsText(file);
                                      },
                                      fail);
                              },
                              fail);
                      }, fail);
                  }
      
                  function readDataUrl(file){
                      var reader = new FileReader();
                      log("readDataUrl...");
                      reader.onloadstart = function(evt){
                          log("onloadstart: " + evt.target.result);
                      };
                      reader.onload = function(evt){
                          log("onload: " + evt.target.result);
                      };
                      reader.onloadend = function(evt){
                          log("onloadend: " + evt.target.result);
                      };
                      reader.onerror = function(evt){
                          log("onerror: " + evt.target.result);
                      };
                      reader.readAsDataURL(file);
                      reader.abort();
                  }
      
                  function readAsText(file){
                      var reader = new FileReader();
                      log("readAsText...");
                      reader.onloadstart = function(evt){
                          log("onloadstart: " + evt.target.result);
                      };
                      reader.onload = function(evt){
                          log("onload: " + evt.target.result);
                      };
                      reader.onloadend = function(evt){
                          log("onloadend: " + evt.target.result);
                      };
                      reader.onerror = function(evt){
                          log("onerror: " + evt.target.result);
                      };
                      reader.readAsText(file);
                  }
      
                  function deleteFile() {
                      window.requestFileSystem(LocalFileSystem.PERSISTENT, 0,
                          function(fileSystem) {
                              fileSystem.root.getFile("readme.txt", {
                                   create : false
                              },
                              function(fileEntry){
                                  fileEntry.remove(function() {log("File deleted.");
                                  },
                                  fail);
                              },
                              fail);
                      }, fail);
                  }
      
                  function fail(error){
                      var msg = error;
                      switch(error.code)
                      {
                          case FileError.NOT_FOUND_ERR:
                              msg = "File Not Found";
                              break;
                          case FileError.SECURITY_ERR:
                              msg = "Security Error";
                              break;
                          case FileError.ABORT_ERR:
                              msg = "Abort error";
                              break;
                          case FileError.NOT_READABLE_ERR:
                              msg = "Not Readable";
                              break;
                          case FileError.ENCODING_ERR:
                              msg = "Encoding Error";
                              break;
                          case FileError.NO_MODIFICATION_ALLOWED_ERR:
                              msg = "No Modification Allowed";
                              break;
                          case FileError.INVALID_STATE_ERR:
                              msg = "Invalid State";
                              break;
                          case FileError.SYNTAX_ERR:
                              msg = "Syntax Error";
                              break;
                          case FileError.INVALID_MODIFICATION_ERR:
                              msg = "Invalid Modification Error";
                              break;
                          case FileError.QUOTA_EXCEEDED_ERR:
                              msg = "Quota Exceeded";
                              break;
                          case FileError.TYPE_MISMATCH_ERR:
                              msg = "Type Mismatch Error";
                              break;
                          case FileError.PATH_EXISTS_ERR:
                              msg = "Path Already Exists Error";
                              break;
                      }
                      log("fail: "+ msg);
                  }
      
                  function log(info){
                      document.getElementById('log').innerHTML += "<br>" + info;
                  }
      
                  function clearLog(info){
                      document.getElementById('log').innerHTML  = "";
                  }
              </script>
          </head>
          <body style="display: none;">
              <!--application UI goes here-->
              <div>
                  <button onclick="createFile();">Create File</button><br>
                  <button onclick="editFile();">Edit File</button><br>
                  <button onclick="readFile();">Read File</button><br>
                  <button onclick="deleteFile();">Delete File</button><br>
                  <button onclick="clearLog();">Clear Log</button><br>
              </div>
              <script src="js/initOptions.js"></script>
              <script src="js/main.js"></script>
              <script src="js/messages.js"></script>
              <div><u><b>Log:</b></u></div>
              <div id=log></div>
          </body>
      </html>
      

      请注意,Javascript 方法最好在 js/main.js 中,而不是在 html 文件中定义。将工作示例作为单个文件提供对我来说更容易。

      【讨论】:

      • 它不会创建文件
      • 它对我来说很好用。我正在使用 Worklight 6.1 并预览 iphone 环境。
      • 如何将读取的数据存储到readAsText的变量中?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多