javascript - 文件阅读器无法正常工作 PhoneGap Windows

标签 javascript cordova windows-phone-8

我正在使用 cordova 在 Visual Studio 2012 上开发 Windows 应用程序。我尝试创建并读取 .txt 文件的内容。

这是我尝试过的

    document.addEventListener("deviceready", onDeviceReady, false);

    function onDeviceReady() {
       window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS, fail);
    }

    function gotFS(fileSystem) {
       // alert("File created");
       fileSystem.root.getFile("textfile.txt", {create: true, exclusive: false}, gotFileEntry, fail);
    }

    function gotFileEntry(fileEntry) {
      // alert(fileEntry.fullPath);
      fileEntry.createWriter(gotFileWriter, fail); 
    }

    function gotFileWriter(writer) {

      /*writer.onwrite = function(evt) {
        fileRead();
        alert("write success");
        console.log("write success");
       }; */

      /* writer.onerror = function(evt) {
        alert("Writing abort");
      }; */

      /* writer.onprogress = function(evt) {
        alert("Progress writing file");
      }; */

      writer.onwritestart = function(parents) {
        // alert("Starts" + parents);
      } 

      writer.onwriteend = function(parent) { 
        alert("Success or Fail "+ parent.target);

      };

      writer.write("some sample text");
      // alert("Writing Data" + writer);
      // contents of file now 'some sample text'
      writer.truncate(11);
      // contents of file now 'some sample'
      writer.seek(4);
      // contents of file still 'some sample' but file pointer is after the 'e' in 'some'
      writer.write(" different text");
      // contents of file now 'some different text'


    }


    function fileRead(){
      //alert("inside file read");
      fileSystem.root.getFile('textfile.txt', {create: false, exclusive: false}, gotFileEntryForRead, fail);
    }


    function gotFileEntryForRead(fileEntry) {
      alert(fileEntry);
      //alert("inside got file entry for read");
      fileEntry.file(gotFile, fail);
    }

    function gotFile(file){
    //readDataUrl(file);
    readAsText(file);
    }

    function readDataUrl(file) {
      var reader = new FileReader();
      reader.onloadend = function(evt) {
      console.log("Read as data URL");
      console.log(evt.target.result);
      };
      reader.readAsDataURL(file);
    }

    function readAsText(file) {
      //alert("inside readAsText");
      var reader = new FileReader();
      reader.onloadend = function(evt) {

        if(evt.target.result == null) {
           alert("File doesn't exists");  
        } else {
           alert("File exists");
        }       

        alert(evt.target.result);
        console.log("Read as text");
        console.log(evt.target.result);
      };
      reader.readAsText(file);
    }

    function fail(evt) {
      alert("Fail");
      //alert("Error:" + evt.target.error.code);
      //console.log(evt.target.error.code);
    } 

该文件是在调用属性 onwrite 时创建的,但是当我尝试使用警报 alert(evt.target.result); 查看文件内容时什么也没发生。

请帮忙

谢谢

最佳答案

您在gotFileEntry、onDeviceReady 和gotFS 函数中使用fail 函数。这些函数执行 requestFileSystem、getFile 和 writeFile 功能。您将如何调试错误在哪里。因此,编写单独的失败处理函数可以轻松地找出错误,然后修复错误。在这种情况下,您将无法准确地得到错误。

其次检查您是否在 cordova 文件中添加了权限。

提示:有时模拟器无法提供真实设备那样的完整功能。还要在真实设备中测试该应用程序。

关于javascript - 文件阅读器无法正常工作 PhoneGap Windows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26292291/

相关文章:

c# - 从 Windows Phone 8.1 中的任务调用主线程

javascript - 将回调添加到动画队列 - jQuery

javascript - 如何轻松地将图像置于 DIV 中心?

javascript - 当我创建许多对象时,kineticjs 会变慢

android - 应用程序图标周围有白色圆圈,适用于 phonegap/cordova 上的 android

javascript - 为什么 onDeviceReady 中的 if() 语句会循环?

javascript - 尝试访问外部存储卡时ENCODING_ERR

c# - 有没有办法以编程方式检查飞行模式状态?

javascript - 如何在动态字符串的react js中事件监听器或单击监听器?

c# - 如何滚动网格?