我有example.txt文件sdcard,我想用手机间隙显示它。我是新手android和手机差距请帮忙。 这是我的example.txt文件:
<h2>This file is in sdcard</h2>
这是我的phonegap.java
package com.example.phonegap;
import org.apache.cordova.DroidGap;
public class Phonegap extends DroidGap{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.loadUrl("file:///android_asset/www/myfile.html");
}
}
以下是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>
答案 0 :(得分:2)
更改此行:
fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
是这样的:
fileSystem.root.getFile("example.txt", {create: false}, gotFileEntry, fail);
假设您要读取的文件是“example.txt”并且位于/ sdcard文件夹中。
答案 1 :(得分:2)
我也遇到了同样的问题。我不认为Phonegap中的API文档是对的,所以我提到了 JavaScript:权威指南,我发现了两个关键点:
我准备阅读的文件的位置。
- &GT;我发现默认的父路径是:/ 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具有非常严格的上传格式策略,因此我无法上传确切的代码。但是你可以联系我索取代码。
答案 2 :(得分:1)
我假设example.txt位于SD卡的根目录(不在文件夹中)。然后更改您的代码,
function gotFS(fileSystem) {
fileSystem.root.getFile("file:///sdcard/example.txt", {create: true}, gotFileEntry, fail);
}
到
function gotFS(fileSystem) {
fileSystem.root.getFile("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 onload='onLoad();'>
让我知道您可能遇到的问题。 感谢,,