Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 从SD卡读取文本文件并使用phone gap显示_Android_Cordova - Fatal编程技术网

Android 从SD卡读取文本文件并使用phone gap显示

Android 从SD卡读取文本文件并使用phone gap显示,android,cordova,Android,Cordova,我有example.txt文件sdcard,我想用phone gap显示它。我对android和phone gap非常陌生,请帮助。 下面是我的example.txt文件: <h2>This file is in sdcard</h2> 以下是www.myfile.html: <!DOCTYPE html> <html> <head> <title>FileReade

我有example.txt文件sdcard,我想用phone gap显示它。我对android和phone gap非常陌生,请帮助。 下面是我的example.txt文件:

     <h2>This file is in sdcard</h2>
以下是www.myfile.html:

       <!DOCTYPE html>
     <html>
     <head>
      <title>FileReader Example</title>

    <script type="text/javascript" charset="utf-8" src="cordova-1.5.0.js"></script>
    <script type="text/javascript" charset="utf-8">

    // Wait for PhoneGap to load
    //
    function onLoad() {
        document.addEventListener("deviceready", onDeviceReady, false);
    }

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

    function gotFS(fileSystem) {
        fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
    }

    function gotFileEntry(fileEntry) {
        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) {
        var reader = new FileReader();
        reader.onloadend = function(evt) {
            console.log("Read as text");
            console.log(evt.target.result);
        };
        reader.readAsText(file);
    }

    function fail(evt) {
        console.log(evt.target.error.code);
    }

    </script>
  </head>
  <body>
    <h1>Example</h1>
    <p>Read File</p>
  </body>
</html>

文件阅读器示例
//等待PhoneGap加载
//
函数onLoad(){
文件。添加的监听器(“deviceready”,OnDeviceraddy,false);
}
//PhoneGap已经准备好了
//
函数ondevicerady(){
requestFileSystem(LocalFileSystem.PERSISTENT,0,gotFS,fail);
}
函数gotFS(文件系统){
fileSystem.root.getFile(“file:///sdcard/example.txt“,{create:true},gotFileEntry,fail);
}
函数gotFileEntry(fileEntry){
fileEntry.file(gotFile,fail);
}
函数gotFile(文件){
readDataUrl(文件);
readAsText(文件);
}
函数readDataUrl(文件){
var reader=new FileReader();
reader.onloadend=函数(evt){
log(“读取为数据URL”);
日志(evt.target.result);
};
reader.readAsDataURL(文件);
}
函数readAsText(文件){
var reader=new FileReader();
reader.onloadend=函数(evt){
console.log(“读取为文本”);
日志(evt.target.result);
};
reader.readAsText(文件);
}
功能失效(evt){
log(evt.target.error.code);
}
例子
读取文件

更改此行:

fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
为此:

fileSystem.root.getFile("example.txt", {create: false}, gotFileEntry, fail);

假设您要读取的文件是“example.txt”,并且位于/sdcard文件夹中。

我也遇到了同样的问题。我不认为Phonegap中的API文档是正确的,所以我参考了JavaScript:权威指南,我发现了两个关键点:

  • 我准备读取的文件的位置。 -->我发现默认的父路径是:/mnt/sdcard。因此“/mnt/sdcard/temp/test.txt”文件被写成
    fileSystem.root.getFile(“temp/test.txt”,null,gotFileEntry,fail)

  • reader.readAsText(file)
    之后,仅使用
    element.innerHTML=reader.result
    无法在HTML文件中显示结果。 因此,我添加了一个回调:

    reader.onload = function(){
        element.innerHTML = reader.result
    }
    
  • 在调整了这两个部分之后,我的代码工作了


    StackOverflow有非常严格的上传格式策略,所以我无法上传准确的代码。但是您可以联系我询问代码。

    我假设example.txt位于SD卡的根目录下(不在文件夹中)。然后更改下面的代码

    function gotFS(fileSystem) {
            fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
        }
    

    并尝试在下面的函数中使用alert

    function readAsText(file) {
            alert("readAstext");
            var reader = new FileReader();
            reader.onloadend = function(evt) {
    
    
                   console.log("Read as text");
                    console.log(evt.target.result);
                    alert("content : "+evt.target.result);
                };
                reader.readAsText(file);
    }
    
    如果这不起作用,请将下面的代码添加到HTML中的body标记中

     <body onload='onLoad();'>
    
    
    
    让我知道你可能面临的问题。
    谢谢,,

    你试过什么吗?如果更多的人看到你付出了一些努力,他们会愿意提供帮助。我从中尝试了,但没有成功。我还尝试粘贴代码/日志(以防你看到错误)我没有看到错误,但输出只是myfile.html文件www.中html主体标记中写入的内容,这是我使用的文件。没有错误,但我看不到输出..哪里可以看到输出请帮助!!我正在使用eclipse……@SimonMacDonald,你知道当文件默认为/sdcard时,如何从内存中读取文件吗?
    function readAsText(file) {
            alert("readAstext");
            var reader = new FileReader();
            reader.onloadend = function(evt) {
    
    
                   console.log("Read as text");
                    console.log(evt.target.result);
                    alert("content : "+evt.target.result);
                };
                reader.readAsText(file);
    }
    
     <body onload='onLoad();'>