var fileSystem = null;
//等待加载PhonrGap
document.addEventListener("deviceready", onDeviceReady, true);
function onDeviceReady() {
//request the persistent file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFSSuccess, onError);
}
//加载phoneGap成功
function onFSSuccess(fs) {//alert("aaa="+ fs);
fileSystem = fs;
}
function onError(e) {
alert(e);
//getById("#content").innerHTML = "<h2>Error</h2>"+e.toString();
}
//areater缓存存储值 防止同时调写文件多次,只有最后的写成功(javascript异步)
var areater = new Array();
var count1 = 0;
//创建文件写文件
function save2File(fileName, key, value, keyValueSplit, recodeSplit) {
//alert(6)
write2File(fileName, key, value, keyValueSplit, recodeSplit, "setSaveSuccess");
}
//创建文件写文件
function write2File(fileName, key, value, keyValueSplit, recodeSplit, responseFun) {//responseFun函数名显示结果
//alert(5)
var saveSuccess = true;
var path_1 = fileName;
var keyValueSplit_1 = keyValueSplit;
var recodeSplit_1 = recodeSplit;
var file_ = "";
var parameter = key + keyValueSplit + value;
areater[count1++] = parameter;
doReadFile();
//文件存在读取文件如果不存在创建文件
function doReadFile() {
//alert(9)
fileSystem.root.getFile(path_1, {
create: true
}, function(f) {
reader = new FileReader();
reader.onloadend = function(e) {
console.log("go to end");
//file_读取到的内容
file_ = e.target.result;
alert(e.target.result)
//logit("<pre>" + e.target.result + "</pre><p/>");
};
reader.readAsText(f);
}, onError);
function onError(e) {}
doAppendFile();
}
//文件不存在创建文件并写文件
function doAppendFile() {
alert("doAppendFile");
fileSystem.root.getFile(path_1, {
create: true
}, function(f) {
f.createWriter(function(writerOb) {
writerOb.onwrite = function() {
//logit("Done writing to file.<p/>");
};
var total = new Array();
total = file_.split(recodeSplit_1);
var value_a = "";
alert(areater.length);
//文件不存在第一次写
if (file_ == undefined || file_ == null || file_ == "") {
value_a = areater.join(recodeSplit_1);
} else {//文件存在
var strs = new Array();
strs = file_.split(recodeSplit_1);
var map = getMap();
for (i = 0; i < strs.length; i++) {
var str = strs[i];
//alert(strs[i])
var key = str.substr(0, str.indexOf(keyValueSplit_1)) + "";
var value = str.substr(str.indexOf(keyValueSplit_1) + 1) + "";
map.put(key, value);
}
for (i = 0; i < areater.length; i++) {
var str = areater[i];
var key = str.substr(0, str.indexOf(keyValueSplit_1)) + "";
var value = str.substr(str.indexOf(keyValueSplit_1) + 1) + "";
map.put(key, value);
}
var str = map.keyset() + "";
var str2 = new Array();
str2 = str.split(",");
var str3 = new Array();
for (i = 0; i < str2.length; i++) {
str3[i] = str2[i] + keyValueSplit_1 + map.get(str2[i]); // 合并key和value
}
value_a = str3.join(recodeSplit_1);
//自定义Map
function getMap() {
var map_ = new Object();
map_.put = function(key, value) {
map_[key + '_'] = value;
};
map_.get = function(key) {
return map_[key + '_'];
};
map_.remove = function(key) {
delete map_[key + '_'];
};
map_.keyset = function() {
var ret = "";
for (var p in map_) {
if (typeof p == 'string' && p.substring(p.length - 1) == "_") {
ret += keyValueSplit_1;
ret += p.substring(0, p.length - 1);
}
}
if (ret == "") {
return ret.split(keyValueSplit_1);
} else {
return ret.substring(1).split(keyValueSplit_1);
}
};
return map_;
}
}
writerOb.write(value_a);
//写成功返回确认
var runFun = responseFun + "(" + saveSuccess + ")";
//字符串转对象
eval_r("(" + runFun + ")");
});
}, onError);
function onError(e) { alert("qqq写文件内容错误:"+e); }
}
// return write1;
}
//读文件中所有内容
function readFromFileAll(filename, keyValueSplit, recodeSplit, responseFun) {
//alert(456)
//var findValue;
var fileSystem1 = null;
var path_1 = filename;
var keyValueSplit_1 = keyValueSplit;
var recodeSplit_1 = recodeSplit;
var file_ = "";
var flag = 1;
document.addEventListener("deviceready", onDeviceReady1, true);
//alert(1)
function onDeviceReady1() {
//alert(2)
//request the persistent file system
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFSSuccess1, onError);
}
function onFSSuccess1(fs) {//alert("aaa="+ fs);
//alert(3)
fileSystem1 = fs;
doReadFile();
}
function onError(e) {
alert(e);
//getById("#content").innerHTML = "<h2>Error</h2>"+e.toString();
}
function doReadFile() {
//alert(5)
fileSystem1.root.getFile(path_1, {
create: true
}, function(f) {
// alert(6)
reader = new FileReader();
reader.onloadend = function(e) {
console.log("go to end");
file_ = e.target.result;
//alert("9998="+e.target.result)
var total = new Array();
total = file_.split(recodeSplit_1);
//var json1 = new Array();
var json1 = {};
// var i = 0;
for (j = 0; j < total.length; j++) {
//alert(1)
var str = total[j];
var s1 = str.substring(0, str.lastIndexOf(keyValueSplit_1));
var s2 = str.substring(str.lastIndexOf(keyValueSplit_1) + 1);
json1[s1] = s2;
}
//alert(json1)
var runFun = responseFun + "(" + WMW.obj2str(json1) + ")";
//alert(runFun)
eval_r("(" + runFun + ")");
};
reader.readAsText(f);
}, onError);
function onError(e) { alert("读取文件内容错误:"+e); }
}
}
//更具KEY查找文件中值
function readFromFile(filename, key, keyValueSplit, recodeSplit,responseFun) {
var path_1 = filename;
var keyValueSplit_1 = keyValueSplit;
var recodeSplit_1 = recodeSplit;
var file_ = "";
doReadFile();
function doReadFile() {
//alert(doReadFile)
fileSystem.root.getFile(path_1, {
create: true
}, function(f) {
reader = new FileReader();
reader.onloadend = function(e) {
file_ = e.target.result;
//alert("9998=" + e.target.result);
var total = new Array();
total = file_.split(recodeSplit_1);
for (j = 0; j < total.length; j++) {
var str = total[j];
//alert(9)
if (str.substring(0, str.lastIndexOf(keyValueSplit_1)) == key) {
//alert(7)
var value = str.substring(str.lastIndexOf(keyValueSplit_1) + 1);
//alert("value=" + value);
// 设置从文件中读取值
var runFun = responseFun + "(" + value + ")";
// alert(runFun)
eval_r("(" + runFun + ")");
break;
}
}
};
reader.readAsText(f);
}, onError);
function onError(e) {}
}
}
// 设置从文件中读取单个值
function setReadFileValue(val) {
var value = val;
//alert(value);
}
// 设置从文件中读取所有值
function setReadFileAll(val) {
alert(7)
alert("value="+val);
}
// 设置从文件写成功
function setSaveSuccess(val) {
//alert(val)
}
//测试
function test() {
alert("11");
onWrite3();
//readFromFile("dataFile.txt", "nnn", ",", "\r\n");
//readFromFileAll("aaa/dataFile.txt",",","\r\n","setReadFileAll");
//save2File("aa/dataFile.txt", "9999", "99999999", ",", "\r\n");
// save2File("dataFile.txt", "888888", "99999999", ",", "\r\n");
// write2File("dataFile.txt", "wwww", "oooooo", ",", "\r\n", "setReadFileAll");
//alert("aa="+aa)
}
//PhoneGap创建文件代码太过繁琐 就省去了创建文件的过程,传参时只能写文件名,不能加路径
//要想把文件保存在文件夹,就先掉一下onWrite3()创建文件夹的作用。
//说这么多意思就是要把文件写在某个文件下,前提是要有这个文件,传参时才可加路径
//刚开始学,有不足之处还望指教
//文中WMW.obj2str(json1)函数没有提供,对象转换的作用,可用字符串代替直接输出
function onWrite3() {
// alert("onWrite");
document.addEventListener("deviceready", onDeviceReady3, false);
}
function onDeviceReady3() {
//alert("onWrite3()");
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, gotFS3, fail);
}
//获取newFile目录,如果不存在则创建该目录
function gotFS3(fileSystem) {
var filePath="myfile";
//var filePath = path_1.substring(0, path_1.lastIndexOf("/"));
newFile = fileSystem.root.getDirectory(filePath, {create:true, exclusive:false}, writerFile3, fail);
}
function writerFile3(){}
function fail(){}
PhoneGap读写SD卡(键值对方式)
猜你喜欢
转载自qinjianlu920.iteye.com/blog/1940949
今日推荐
周排行