Android 从SD卡读取文本文件并使用phone gap显示
我有example.txt文件sdcard,我想用phone gap显示它。我对android和phone gap非常陌生,请帮助。 下面是我的example.txt文件: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
<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:权威指南,我发现了两个关键点:
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();'>