/*************************************** **************************************** *************
* Author: conowen @ Dazhong
* E-mail: conowen@hotmail.com
* Http://blog.csdn.net/conowen
* Note: This article is original and only used for learning and communication. For more information, indicate the author and its source.
**************************************** **************************************** ************/
Android Data Storage
There are several ways to store file data in Android, such as shared preferences, network, SQLite, file ......
File storage can be divided into private folders and sdcard directories of applications by storage location.
Today, let's talk about the read and write operations of the Android app on private folders.
Private file storage
The private folder of an application is located under the/data/"application package name"/Files folder. Open the ddms of eclipse and you can find the file by viewing file explorer.
After creation, the user has read and write permissions. By default, the file cannot be accessed by other applications, but the permissions can be changed. After the application is installed, you can clear the data of the application in the "Settings" option of Android. You can use openfileoutput (string filename, mode) and openfileinput (string filename) to obtain a file stream (fileoutputstream) or (fileiutputstream ), call the write or read method of the file stream to implement the "write" and "read" functions.
Write operation
Openfileoutput (string filename, mode) ---- open the specified private file (string filename) in the private directory of the application to write data,
Returns a fileoutputstream object. If the object does not exist, it is created.
Official description
Parameters
Name |
The name of the file to open; can not contain path separators. |
Mode |
Operating mode. Use 0 orMODE_PRIVATE For the default operation,MODE_APPEND To Append to an existing file,MODE_WORLD_READABLE AndMODE_WORLD_WRITEABLE To control permissions. |
Returns
- Fileoutputstream resulting output stream.
Constant meaning
MODE_PRIVATE
Default mode. The value is 0. files can only be accessed by applications that call this method.
MODE_APPEND
If the file already exists, write data to the end of the file instead of overwriting the original data. (Common)
MODE_WORLD_READABLE
All applications have the permission to read the file.
MODE_WORLD_WRITEABLE
All applications have the write permission on the file.
Simple file Writing Process
After the openfileoutput (string filename, mode) method is called, a fileoutputstream object is returned.
Then, you can write the file by calling the write method of the fileoutputstream object.
Fileoutputstream. Write (byte [] buffer) Although note that the write () method writes data of the byte [] type
byte[] buffer = args.getBytes();
Converts ARGs of the string type to the byte [] type. And then write.
Other operations:
Read files
Openfileinput (string filename) opens the specified private file in the private directory of the application to read data, and returns a fileinputstream object
List objects
Filelist () searches for private files in the private folder of the application, and returns a string array of all file names.
Delete an object
Deletefile (string filename) deletes the file with the specified file name. If the file is successfully deleted, true is returned. If the file fails, false is returned.
For more information, see the Demo code.
/* Author: conowen * Date: 2012.2.27 */package COM. conowen. privatefile; import Java. io. fileinputstream; import Java. io. fileoutputstream; import Org. apache. HTTP. util. encodingutils; import android. app. activity; import android. OS. bundle; import android. util. log; import android. view. view; import android. view. view. onclicklistener; import android. widget. button; import android. widget. edittext; import android. widget. toa St; public class privatefileactivity extends activity {/** called when the activity is first created. * // @ overridepublic void oncreate (bundle savedinstancestate) {super. oncreate (savedinstancestate); setcontentview (R. layout. main); button writebt = (button) findviewbyid (R. id. write); button readbt = (button) findviewbyid (R. id. read); button delbt = (button) findviewbyid (R. id. del); writebt. setonclicklistener (New onclicklistener () {@ overridepublic void onclick (view v) {// todo auto-generated method stubedittext ET = (edittext) findviewbyid (R. id. et); string Etres = et. gettext (). tostring (); filewrite ("test. data ", Etres); string [] filelist = filelist (); // find the file in the private folder and return the file name toast. maketext (privatefileactivity. this, "the file name is" + filelist [0], toast. length_short ). show () ;}}); readbt. setonclicklistener (New onclicklistener (){ @ Overridepublic void onclick (view v) {// todo auto-generated method stubstring result = ""; Result = fileread ("test. data "); toast. maketext (privatefileactivity. this, result, toast. length_short ). show () ;}}); delbt. setonclicklistener (New onclicklistener () {@ overridepublic void onclick (view v) {// todo auto-generated method stubdelfile ("test. data ") ;}}) ;}// read Public String fileread (string filename) {// open a specified file And returns the string object string res = ""; // initialize restry {fileinputstream fileread = openfileinput (filename); // gets the object length int lenght = fileread. available (); byte [] buffer = new byte [lenght]; fileread. read (buffer); // convert the byte array to the string res = encodingutils in the specified encoding format. getstring (buffer, "UTF-8"); // file encoding} catch (exception e) {e. printstacktrace ();} return res;} // Delete public Boolean delfile (string filename) {try {Boolean del = deletefil E (filename); Return del;} catch (exception e) {e. printstacktrace ();} return false;} public void filewrite (string filename, string ARGs) {// write try {byte [] buffer = args. getbytes (); // convert the string to be written to the byte array. ARGs is the string passed in by the method: fileoutputstream out = openfileoutput (filename, mode_append); // obtain fileoutputstreamout. write (buffer); // write the byte array to the file log. I ("I", "write"); out. close (); // close the file output stream} catch (exception e) {system. err. Println ("error writing to file! ");}}}
Main. XML Code
<? XML version = "1.0" encoding = "UTF-8"?> <Linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: layout_width = "fill_parent" Android: layout_height = "fill_parent" Android: Orientation = "vertical"> <textview Android: layout_width = "fill_parent" Android: layout_height = "wrap_content" Android: text = "@ string/Hello"/> <edittext Android: Id = "@ + ID/ET" Android: layout_width = "fill_parent" Android: layout_height = "wrap_content"/> <button Android: Id = "@ + ID/write" Android: layout_width = "80dip" Android: layout_height = "wrap_content" Android: text = "write"/> <button Android: Id = "@ + ID/read" Android: layout_width = "80dip" Android: layout_height = "wrap_content" Android: text = "read"/> <button Android: Id = "@ + ID/del" Android: layout_width = "80dip" Android: layout_height = "wrap_content" Android: text = "delete"/> </linearlayout>