tizen - Creating and writing into a file in Gear S -
i have database (idbstore) defined watch. trying write data file , clear database. please see code below:
function writedatalocally() { var database = getdatabase(); var onsuccess = function(array){ var documentsdir, newfile; tizen.filesystem.resolve("documents", onresolve, function(error) { console.log("could not resolve documents folder."); console.log(error); }); function onresolve(result) { newfilepath = "myfolder"; documentsdir = result; var newdir = documentsdir.createdirectory(newfilepath); console.log("new folder created."); /* ^^^^^ can see log ^^^^^ */ newfile = documentsdir.createfile(newfilepath + "/sensordata_" + new timestamp() + ".txt"); /* following log not displayed! */ /* think error in here! */ console.log("new file created."); } if(newfile != null) { newfile.openstream("w", onopenstream, function(error) { console.log("could not create file."); console(error); }, "utf-8"); function onopenstream(fs) { console.log(json.stringify(array)); fs.write(json.stringify(array)); fs.close(); console.log("data written file."); } } }, onerror = function(error){ console.log(error); }; database.getall(onsuccess, onerror); } i not getting logs, says cannot create required directory. can please see bugs in simple function? may basic, new tizen. thanks.
update
able create folder , file in way using following code:
function writedatalocally() { var database = getdatabase(); var onsuccess = function(array){ var documentsdir, newfile; tizen.filesystem.resolve("documents", onresolve, function(error) { console.log("could not resolve documents folder."); console.log(error); }); function onresolve(result) { newfilepath = "myfolder"; documentsdir = result; var newdir = documentsdir.createdirectory(newfilepath); console.log("new folder created."); d = new date(); newfile = newdir.createfile("sensordata_" + d.todatestring() + ".txt"); console.log("new file created."); if(newfile != null) { newfile.openstream("w", onopenstream, function(error) { console.log("could not create file."); console(error); }, "utf-8"); function onopenstream(fs) { console.log("file opened , ready write..."); fs.write(json.stringify(array)); fs.close(); newfile = null; console.log("data written file"); }; } }, onerror = function(error){ console.log(error); }; database.getall(onsuccess, onerror); } see changes newdir , 'newfile`. here situation now:
if folder exists, nothing going happen! once delete myfolder device, both file , folder created , data written file, first time.
if there myfolder folder in device, no other file created in directory. suggestions?
you need add these privleges in app's config.xml file.
<tizen:privilege name="http://tizen.org/privilege/filesystem.write"/> <tizen:privilege name="http://tizen.org/privilege/filesystem.read"/> then you'll able create directory/file.
edit
i think there typo in code.
documentsdir = result; var newdir = docuemntsdir.createdirectory(... it should be,
documentsdir = result; var newdir = documentsdir.createdirectory(... edit2
try below 2 methods:
method 1 -
newfile = documentsdir.createfile("sensordata.txt"); method 2 -
var timestamp = new timestamp(); newfile = documentsdir.createfile(newfilepath + "sensordata_" + timestamp + ".txt"); if both method works, take "method 2" code.
edit3
the callback function onresolve(), initialize "newfile" var, , trying access outside might have not been initialized.
put below code inside onresolve() function
if(newfile != null) { newfile.openstream("w", onopenstream, function(error) { console.log("could not create file."); console(error); }, "utf-8"); also, there typo in onresolve function, below code
newfile = newdir.createfile("sensordata_" + d.todatestring() + ".txt"); should
newfile = documentsdir.createfile("sensordata_" + d.todatestring() + ".txt"); one more problem there in code, can't pass variable direclty createdirectory
var newdir = documentsdir.createdirectory(newfilepath); kindly use string is, i.e
var newdir = documentsdir.createdirectory("myfolder"); edit4 need first trying resolving created folder i.e if exists no need create new folder.
remove code onsuccess
var documentsdir, newfile; tizen.filesystem.resolve("documents", onresolve, function(error) { console.log("could not resolve documents folder."); console.log(error); }); and add below code in place.
var documentsdir, newfile; tizen.filesystem.resolve("myfolder", onmyfolderresolve, function(error) { console.log("your myfolder doesn't exists."); console.log("now resolve documents folder"); tizen.filesystem.resolve("documents", onresolve, function(error){console.log("could not resolve documents folder");}); }); function onmyfolderresolve(result) { console.log("your folder exists"); myfolderdir = result; d = new date(); newfile = myfolderdir.createfile("sensordata_" + d.todatestring() + ".txt"); }
Comments
Post a Comment