實(shí)例詳解Android文件存儲數(shù)據(jù)方式
總體的來講,數(shù)據(jù)存儲方式有三種:一個是文件,一個是數(shù)據(jù)庫,另一個則是網(wǎng)絡(luò)。下面通過本文給大家介紹Android文件存儲數(shù)據(jù)方式。
1.文件存儲數(shù)據(jù)使用了Java中的IO操作來進(jìn)行文件的保存和讀取,只不過Android在Context類中封裝好了輸入流和輸出流的獲取方法。
創(chuàng)建的存儲文件保存在/data/data/<package name>/files文件夾下。
2.操作。
保存文件內(nèi)容:通過Context.openFileOutput獲取輸出流,參數(shù)分別為文件名和存儲模式。
讀取文件內(nèi)容:通過Context.openFileInput獲取輸入流,參數(shù)為文件名。
刪除文件:Context.deleteFile刪除指定的文件,參數(shù)為將要刪除的文件的名稱。
獲取文件名列表:通過Context.fileList獲取files目錄下的所有文件名數(shù)組。
*獲取文件路徑的方法:
絕對路徑:/data/data/<package name>/files/filename
Context:Context.getFilesDir()可以獲取到"/data/data/<package name>/files"
3.四種文件保存的模式。
Context.MODE_PRIVATE 為默認(rèn)操作模式,代表該文件是私有數(shù)據(jù),只能被應(yīng)用本身訪問,在該模式下寫入的內(nèi)容會覆蓋原文件的內(nèi)容。
Context.MODE_APPEND 檢查文件是否存在,存在就往文件追加內(nèi)容,否則就創(chuàng)建新文件。
MODE_WORLD_READABLE 表示當(dāng)前文件可以被其他應(yīng)用讀取。
MODE_WORLD_WRITEABLE 表示當(dāng)前文件可以被其他應(yīng)用寫入。
在使用模式時,可以用"+"來選擇多種模式,比如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()); } } // 保存文件內(nèi)容 private void writeFiles(String content) { try { // 打開文件獲取輸出流,文件不存在則自動創(chuàng)建 FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(content.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } // 讀取文件內(nèi)容 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; } }
程序截圖:
提供一個文件存儲數(shù)據(jù)的工具類:
/** * 文件存儲數(shù)據(jù)方式工具類 * * @author zuolongsnail */ public class FilesUtil { /** * 保存文件內(nèi)容 * * @param c * @param fileName * 文件名稱 * @param content * 內(nèi)容 */ private void writeFiles(Context c, String fileName, String content, int mode) throws Exception { // 打開文件獲取輸出流,文件不存在則自動創(chuàng)建 FileOutputStream fos = c.openFileOutput(fileName, mode); fos.write(content.getBytes()); fos.close(); } /** * 讀取文件內(nèi)容 * * @param c * @param fileName * 文件名稱 * @return 返回文件內(nèi)容 */ 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; } }
以上通過實(shí)例詳解Android文件存儲數(shù)據(jù)方式,希望對大家今后的工作學(xué)習(xí)有所幫助。
- 詳解Android數(shù)據(jù)存儲之Android 6.0運(yùn)行時權(quán)限下文件存儲的思考
- Android實(shí)現(xiàn)文件存儲并讀取的示例代碼
- android數(shù)據(jù)存儲之文件存儲方法
- android開發(fā)基礎(chǔ)教程—文件存儲功能實(shí)現(xiàn)
- Android圖片添加水印圖片并把圖片保存到文件存儲的實(shí)現(xiàn)代碼
- 詳解Android開發(fā)數(shù)據(jù)持久化之文件存儲(附源碼)
- Android學(xué)習(xí)之文件存儲讀取
- 詳解Android文件存儲
- Android編程之SharedPreferences文件存儲操作實(shí)例分析
- Android開發(fā)文件存儲實(shí)例
相關(guān)文章
android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo)的示例代碼
這篇文章主要介紹了android10 隱藏SystemUI鎖屏下的多用戶圖標(biāo),本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Android Studio利用AChartEngine制作餅圖的方法
閑來無事,發(fā)現(xiàn)市面上好多app都有餅圖統(tǒng)計(jì)的功能,得空自己實(shí)現(xiàn)一下,下面這篇文章主要給大家介紹了關(guān)于Android Studio利用AChartEngine制作餅圖的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧2018-10-10Android 自定義底部上拉控件的實(shí)現(xiàn)方法
下面小編就為大家分享一篇Android 自定義底部上拉控件的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01Android基于wheelView實(shí)現(xiàn)自定義日期選擇器
這篇文章主要為大家詳細(xì)介紹了Android基于wheelView實(shí)現(xiàn)自定義日期選擇器,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Flutter實(shí)現(xiàn)滾動選擇數(shù)字
這篇文章主要為大家詳細(xì)介紹了Flutter實(shí)現(xiàn)滾動選擇數(shù)字,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03EditText限制小數(shù)點(diǎn)前后位數(shù)的實(shí)例
下面小編就為大家?guī)硪黄狤ditText限制小數(shù)點(diǎn)前后位數(shù)的實(shí)例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-04-04Android usb設(shè)備權(quán)限查詢及自動獲取詳解流程
本篇文章介紹了我想要獲取Android系統(tǒng)usb設(shè)備使用權(quán)限時遇到的問題,以及解決該問題的過程及思路,通讀本篇對大家的學(xué)習(xí)或工作具有一定的價(jià)值,需要的朋友可以參考下2021-10-10Android開發(fā)實(shí)現(xiàn)的簡單五子棋游戲示例
這篇文章主要介紹了Android開發(fā)實(shí)現(xiàn)的簡單五子棋游戲,結(jié)合實(shí)例形式分析了Android實(shí)現(xiàn)五子棋游戲功能的布局、游戲功能等具體實(shí)現(xiàn)步驟與相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-12-12