Writing to an External File on Android --- File Doesn't Register, But Java Can Read -
i'm trying write external txt (or csv) file android. can run app, close it, , run again, , readdata() read log i've stored. however, dirfile (file directory) appears within android files (even if connect computer , search).
something interesting, though: if clear log (similar list of print statements shown within eclipse) , disconnect phone computer, reconnect it, log reappears i've ever written file (even if later overwrote it)...yet app isn't running!
here code. please me understand why cannot find file!
(note: i've tried appending "myfile.txt" extension directory, causes eisdir exception.)
public void writedata(string dirname){ try { file root = new file(getexternalfilesdir(null), dirname); // writes file // // "true" argument allows file appended. without argument (just root), // file overwritten (even though later call append) rather appended to. filewriter writer = new filewriter(root, true); writer.append("append text\n"); writer.flush(); writer.close(); // checks if wrote file reading in (appears in log) //readdata(dirname); } catch(exception e) { log.v("2222", "2222 error: " + e.getmessage()); } }
if you're interested, here's function wrote read in data:
public void readdata(string dirname){ try { file root = new file(getexternalfilesdir(null), dirname); // checks see if writing file reading in file bufferedreader reader = new bufferedreader(new filereader(root)); try { string s = reader.readline(); while (s != null) { log.v("2222", "2222 read: " + s); s = reader.readline(); } } catch(exception e) { log.v("2222", "2222 error: " + e.getmessage()); } { reader.close(); } } catch(exception e) { log.v("2222", "2222 error: " + e.getmessage()); } }
thanks!
even if connect computer , search
if clear log (similar list of print statements shown within eclipse) , disconnect phone computer, reconnect it, log reappears i've ever written file (even if later overwrote it).
what seeing on computer indexed mediastore
, , possibly subset of those, depending upon whether computer caches information gets device in terms of "directory" contents.
to ensure mediastore
indexes file promptly:
use
fileoutputstream
(optionally wrapped inoutputstreamwriter
), notfilewriter
call
flush()
,getfd().sync()
, ,close()
onfileoutputstream
, instead of callingflush()
,close()
onfilewriter
(sync()
ensure bytes written disk before continuing)use
mediascannerconnection
,scanfile()
tellmediastore
index file
you can use whatever sort of "reload" or "refresh" or whatever option in desktop os's file manager, , file should show up.
this blog post has more on of this.
Comments
Post a Comment