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

Popular posts from this blog

javascript - Bootstrap Popover: iOS Safari strange behaviour -

Magento/PHP - Get phones on all members in a customer group -

session - Logging Out Using PHP -