簡體   English   中英

如何在IBM Worklight中使用FileSystem API寫入文件?

[英]How to write in file using FileSystem API with IBM Worklight?

我正在使用HTML5的FileSystem API和Worklight創建緩存文件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;
}
    }

這是用於顯示文件內容的read函數,它返回一個空的String:

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);
}

任何人都有任何想法如何解決此問題以及如何成功寫入和讀取文件?
謝謝

我認為最好使用一些專門為您要實現的目的而設計的Worklight功能,例如:

  1. 加密緩存
  2. JSONStore

這是一個允許創建/編輯/讀取/刪除簡單文本文件的示例。 希望這可以幫助。

<!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文件中定義。 對於我來說,將工作樣本作為單個文件提供起來更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM