編輯:關於Android編程
總體的來講,數據存儲方式有三種:一個是文件,一個是數據庫,另一個則是網絡。下面通過本文給大家介紹Android文件存儲數據方式。
1.文件存儲數據使用了Java中的IO操作來進行文件的保存和讀取,只不過Android在Context類中封裝好了輸入流和輸出流的獲取方法。
創建的存儲文件保存在/data/data/<package name>/files文件夾下。
2.操作。
保存文件內容:通過Context.openFileOutput獲取輸出流,參數分別為文件名和存儲模式。
讀取文件內容:通過Context.openFileInput獲取輸入流,參數為文件名。
刪除文件:Context.deleteFile刪除指定的文件,參數為將要刪除的文件的名稱。
獲取文件名列表:通過Context.fileList獲取files目錄下的所有文件名數組。
*獲取文件路徑的方法:
絕對路徑:/data/data/<package name>/files/filename
Context:Context.getFilesDir()可以獲取到"/data/data/<package name>/files"
3.四種文件保存的模式。
Context.MODE_PRIVATE 為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下寫入的內容會覆蓋原文件的內容。
Context.MODE_APPEND 檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。
MODE_WORLD_READABLE 表示當前文件可以被其他應用讀取。
MODE_WORLD_WRITEABLE 表示當前文件可以被其他應用寫入。
在使用模式時,可以用"+"來選擇多種模式,比如openFileOutput(FILENAME, Context.MODE_PRIVATE + MODE_WORLD_READABLE);
下面通過程序來演示下文件存儲的使用。完整代碼下載:android_files.rar
/** * MainActivity * * @author zuolongsnail * */ public class MainActivity extends Activity { private EditText writeET; private Button writeBtn; private TextView contentView; public static final String FILENAME = "setting.set"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); writeET = (EditText) findViewById(R.id.write_et); writeBtn = (Button) findViewById(R.id.write_btn); contentView = (TextView) findViewById(R.id.contentview); writeBtn.setOnClickListener(new OperateOnClickListener()); } class OperateOnClickListener implements OnClickListener { @Override public void onClick(View v) { writeFiles(writeET.getText().toString()); contentView.setText(readFiles()); System.out.println(getFilesDir()); } } // 保存文件內容 private void writeFiles(String content) { try { // 打開文件獲取輸出流,文件不存在則自動創建 FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(content.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } // 讀取文件內容 private String readFiles() { String content = null; try { FileInputStream fis = openFileInput(FILENAME); ByteArrayOutputStream baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) != -1) { baos.write(buffer, 0, len); } content = baos.toString(); fis.close(); baos.close(); } catch (Exception e) { e.printStackTrace(); } return content; } }
程序截圖:
提供一個文件存儲數據的工具類:
/** * 文件存儲數據方式工具類 * * @author zuolongsnail */ public class FilesUtil { /** * 保存文件內容 * * @param c * @param fileName * 文件名稱 * @param content * 內容 */ private void writeFiles(Context c, String fileName, String content, int mode) throws Exception { // 打開文件獲取輸出流,文件不存在則自動創建 FileOutputStream fos = c.openFileOutput(fileName, mode); fos.write(content.getBytes()); fos.close(); } /** * 讀取文件內容 * * @param c * @param fileName * 文件名稱 * @return 返回文件內容 */ private String readFiles(Context c, String fileName) throws Exception { ByteArrayOutputStream baos = new ByteArrayOutputStream(); FileInputStream fis = c.openFileInput(fileName); byte[] buffer = new byte[1024]; int len = 0; while ((len = fis.read(buffer)) != -1) { baos.write(buffer, 0, len); } String content = baos.toString(); fis.close(); baos.close(); return content; } }
以上通過實例詳解Android文件存儲數據方式,希望對大家今後的工作學習有所幫助。
(1)布局文件沒有做更改 (2)在res--menu目錄下的main.xml文件中代碼如下:
關於activity的生命周期:要知道的知識點1.每個生命活動執行的順序、2.每個生命周期我們應該做怎麼樣的處理:每個方法保留的時間有多久;那個方法是活動阻塞的,他沒有做
小米手環怎麼設置來電震動?小米手環上市開始就受到廣大用戶的青睐,不僅功能使用,價格還很公道,下面小編為大家帶來小米手環來電震動設置方法。小米手環設置來電震動
微信的訂閱號有很多很搞笑的視頻我們怎麼下載下來?朋友圈裡鏈接的視頻非常珍貴如何保存?相信大家都很想知道吧,下面讓我來給大家介紹怎麼下載微信中的視頻的方法吧。