android中資源文件的兩種訪問方式,在android開發中進行數據存儲與訪問的多種方式介紹...

在android開發中進行數據存儲與訪問的多種方式介紹

更新時間:2013年06月07日 16:24:23 ? 作者:

很多時候我們的軟件需要對處理后的數據進行存儲或再次訪問,Android為數據存儲提供了多種方式,首先給大家介紹使用文件如何對數據進行存儲,感興趣的朋友可以了解下哈

數據存儲與訪問

很多時候我們的軟件需要對處理后的數據進行存儲或再次訪問。Android為數據存儲提供了多種方式,分別有如下幾種:

文件

SharedPreferences

SQLite數據庫

內容提供者(Content provider)

網絡

使用文件進行數據存儲

首先給大家介紹使用文件如何對數據進行存儲,Activity提供了openFileOutput()方法可以用于把數據輸出到文件中,具體的實現過程與在J2SE環境中保存數據到文件中是一樣的。

public class FileActivity extends Activity {

@Override public void onCreate(Bundle savedInstanceState) {

...

FileOutputStream outStream = this.openFileOutput("csdnt.txt", Context.MODE_PRIVATE);

outStream.write("CSDN".getBytes());

outStream.close();

}

}

openFileOutput()方法的第一參數用于指定文件名稱,不能包含路徑分隔符“/” ,如果文件不存在,Android 會自動創建它。創建的文件保存在/data/data//files目錄,如: /data/data/cn.csdn.action/files/csdn.txt ,通過點擊Eclipse菜單“Window”-“Show View”-“Other”,在對話窗口中展開android文件夾,選擇下面的File Explorer視圖,然后在File Explorer視圖中展開/data/data//files目錄就可以看到該文件。

openFileOutput()方法的第二參數用于指定操作模式,有四種模式,分別為: Context.MODE_PRIVATE = 0

Context.MODE_APPEND = 32768

Context.MODE_WORLD_READABLE = 1

Context.MODE_WORLD_WRITEABLE = 2

Context.MODE_PRIVATE:為默認操作模式,代表該文件是私有數據,只能被應用本身訪問,在該模式下,寫入的內容會覆蓋原文件的內容,如果想把新寫入的內容追加到原文件中。可以使用Context.MODE_APPEND

Context.MODE_APPEND:模式會檢查文件是否存在,存在就往文件追加內容,否則就創建新文件。

Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE用來控制其他應用是否有權限讀寫該文件。

MODE_WORLD_READABLE:表示當前文件可以被其他應用讀取;MODE_WORLD_WRITEABLE:表示當前文件可以被其他應用寫入。

如果希望文件被其他應用讀和寫,可以傳入:

openFileOutput("csdn.txt", Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE);

android有一套自己的安全模型,當應用程序(.apk)在安裝時系統就會分配給他一個userid,當該應用要去訪問其他資源比如文件的時候,就需要userid匹配。默認情況下,任何應用創建的文件,sharedpreferences,數據庫都應該是私有的(位于/data/data//files),其他程序無法訪問。除非在創建時指定了Context.MODE_WORLD_READABLE或者Context.MODE_WORLD_WRITEABLE ,只有這樣其他程序才能正確訪問。

讀取文件內容

如果要打開存放在/data/data//files目錄應用私有的文件,可以使用Activity提供openFileInput()方法。

FileInputStream inStream = this.getContext().openFileInput("csdn.txt");

Log.i("FileTest", readInStream(inStream));

readInStream()的方法請看本頁下面備注。

或者直接使用文件的絕對路徑:

File file = new File("/data/data/cn.csdn.action/files/csdn.txt");

FileInputStream inStream = new FileInputStream(file);

Log.i("FileTest", readInStream(inStream));

注意:上面文件路徑中的“cn.csdn.action”為應用所在包,當你在編寫代碼時應替換為你自己應用使用的包。

對于私有文件只能被創建該文件的應用訪問,如果希望文件能被其他應用讀和寫,可以在創建文件時,指定Context.MODE_WORLD_READABLE和Context.MODE_WORLD_WRITEABLE權限。

Activity還提供了getCacheDir()和getFilesDir()方法:

getCacheDir()方法用于獲取/data/data//cache目錄

getFilesDir()方法用于獲取/data/data//files目錄

相關文章

1a1b05c64693fbf380aa1344a7812747.png

這篇文章主要介紹了Android 通過網絡圖片路徑查看圖片實例詳解的相關資料,需要的朋友可以參考下2017-06-06

4f55910a645b073bc4fc65dc10dc14bd.png

這篇文章主要給大家介紹了如何屏蔽RecyclerView單邊滑動到頭陰影(fadingEdge)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-04-04

0ea3c7666119d5615e582f823fb3fad6.png

本文給大家帶來兩種有關Android 中 GridView嵌套在ScrollView里只有一行的解決方法,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧2016-10-10

4f96a78db829b1556ff16de21e013c7a.png

這篇文章主要介紹了Android 實現滑動方法總結的相關資料,需要的朋友可以參考下2017-07-07

8cc1031babc6aff2319f1c6af8544aa0.png

本文主要介紹Android MediaRecorder,在使用MediaRecorder時經常會遇到視頻錄制太短問題,這里提供解決問題的實例代碼以供大家參考2016-07-07

0c932a99bb7b6f23c937db507070cc7b.png

這篇文章主要介紹了Android基于BaseExpandableListAdapter實現的二級列表仿通話記錄功能,結合具體實例形式分析了Android實現通話記錄功能的布局與功能相關操作技巧,需要的朋友可以參考下2017-07-07

cca732bf65a93ed2ec0ac80c638460fe.png

這篇文章主要給大家介紹了Android通過自定義控件實現360軟件詳情頁效果的相關資料,實現后的效果非常不錯,文中也給出了詳細的示例代碼和介紹,需要的朋友可以參考借鑒,下面來一起看看吧。2017-05-05

2d9f31f2af7b675a3d153d2b7f1035a7.png

這篇文章主要介紹了android實現百度地圖自定義彈出窗口的功能,大家參考使用吧2013-11-11

b452cee8ec5cd9e58ab98eba17281e59.png

這篇文章主要介紹了Android使用Intent發送短信的實現方法,結合簡單實例形式分析了Android短信發送功能的實現技巧,需要的朋友可以參考下2016-07-07

f4838ec7e2d4da28e0b57d4e852dadd4.png

這篇文章主要為大家詳細介紹了Android Popupwindow彈出窗口的簡單使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07

最新評論

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/454597.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/454597.shtml
英文地址,請注明出處:http://en.pswp.cn/news/454597.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

MySQL5.6主從復制(讀寫分離)方案

MySQL5.6主從復制(讀寫分離)方案 https://yq.aliyun.com/articles/24255 摘要: 一、前言:為什么MySQL要做主從復制(讀寫分離)? 通俗來講,如果對數據庫的讀和寫都在同一個數據庫服務器中操作,業務…

Python 內置模塊之 os

os.walk os.walk() 方法是一個簡單易用的文件、目錄遍歷器,可以幫助我們高效的處理文件、目錄方面的事情。簡單來說,就是挨個遍歷指定路徑下的目錄(文件夾)和文件。用于通過在目錄樹中游走輸出在目錄中的目錄名,文件名…

[arm驅動]linux內核時鐘

《[arm驅動]linux內核時鐘》涉及內核驅動函數四個,內核結構體一個,分析了內核驅動函數一個;可參考的相關應用程序模板或內核驅動模板一個,可參考的相關應用程序模板或內核驅動一個 一、內核定時器 意義:內核定時器是軟件意義上…

企業網站 源碼 服務郵箱:_公司企業郵箱購買,外貿企業郵箱用哪家服務好?

企業日常辦公,經常會用到各種辦公軟件,而企業郵箱便是最常用的產品。公司在購買企業郵箱時需要考慮哪些方面,尤其是對于外貿行業的企業郵箱,應該如何選擇呢?1. 安全保障公司企業郵箱購買時,首先要關注的就是…

微軟公司等數據結構+算法面試100題2010版全部出爐

微軟等公司數據結構算法面試100題2010版首次完整亮相 作者:July、2010年12月6日。 更新:現今,這100題的答案已經全部整理出來了,微軟面試100題2010年版全部答案集錦:http://blog.csdn.net/v_july_v/arti…

android橫豎屏切換布局閃退,Android-Activity橫豎屏切換不殺死Activity 并監聽橫豎屏切換...

在上一篇博客,Android-Activity臨時數據的保存,中講解到,當發生橫豎屏切換的時候,系統會殺死Activity并重新啟動Activity系統會殺死Activity12-12 08:11:50.441 3347-3347/liudeli.activity D/TempDataActivity: onPause12-12 08:…

基于web的新聞發布系統_終極Linux系統ExTiX 19.8發布,基于深度操作系統deepin15.11...

近日,GNU/Linux開發人員Arne Exton發布了他的ExTiX 終極Linux系統的新版本,帶有全新的底層和更新的組件。ExTiX Deepin 19.8基于Deepin Linux操作系統,更具體地說,ExTiX Deepin 19.8基于最新的Deepin 15.11版本,它增加…

Python 之內置函數和匿名函數

內置函數 截止到python3.6.2,python一共為我們提供了68個內置函數。它們就是python提供可以直接拿來使用的所有函數 Built-in Functions abs()dict()help()min()setattr()all()dir()hex()next()slice()any()divmod()id()object()sorted()ascii()enumerate()input(…

個人作業1

Deadline: 2017-9-30 10:00PM,以博客發表日期為準。 評分基準: 按時交 - 有分(滿分10分),檢查的項目包括后文的三個方面 按題目要求完成個人博客注冊、碼云賬號注冊(1分)完成閱讀作業和提問&…

“西郵漫記”--自由照耀中國

"西郵漫記"--自由照耀中國九月初在北京linuxWorld大會上我遇見了久違的陳莉君教授,陳教授是西安郵電學院計算機系教授Linux內核的老師,上次相識是在廣州參加廣東Linux推進中心舉辦的“Linux文化節”,當時陳教…

numpy 是否為零_如果不懂 numpy,請別說自己是 python 程序員

(給Python開發者加星標,提升Python技能)作者:牧馬人 (本文來自作者投稿)0. 前言大約七八年前,我曾經用 pyOpenGL 畫過地球磁層頂的三維模型,這段代碼至今仍然還運行在某科研機構里。在那之前,我一直覺得自己是一個合(y…

Python 第三方模塊之 ElementTree(ET)- 解析XML文件

ElementTree是Python常用的處理XML文件的類。下面將介紹使用ElementTree解析、查找、修改XML的方法。 1、引用方法 import xml.etree.ElementTree as ET 2、一個XML例子 下面所有的操作都將下面這段XML為例&#xff0c;我們將它保存為sample.xml。 <?xml version"…

android 編譯luajit,Android 嵌入 LuaJIT 的曲折道路

相關鏈接&#xff1a;Windows 下編譯 LuaJIT懶人與伸手黨可以直接看最底部。為什么使用 LuaJITLua 官方版的編譯嵌入相對簡單&#xff0c;但是為什么要用 LuaJIT 呢&#xff1f;我所了解到的優勢有&#xff1a;更高的運行效率。支持運行 Lua 編譯后的機器碼。雖然 Lua 也支持編…

運維自動化之使用PHP+MYSQL+SHELL打造私有監控系統(一)

前言 記得剛來這家公司的時候&#xff0c;我部門就我一個運維工程師&#xff0c;然后就是經理&#xff0c;剛開始公司平臺什么監控都沒有&#xff0c;在我與經理的努力下&#xff0c;先搭建nagioscacti監控平臺&#xff0c;后來隨著公司業務的增加&#xff0c;平臺的功能與服務…

面試風云錄(01) - 怎樣回答這兩個問題?

由于工作經歷的緣故&#xff0c;使我有一些面試別人的機會&#xff0c;所以應該還有一些經驗可以跟大家聊聊。 當我們提到“面試” 這個詞&#xff0c;總是讓人有種階級感&#xff0c;好像面試官就是高高在上&#xff0c;而面試者則是屈居于下&#xff0c;其實并非如此&#xf…

Redis Python

Python操作Redis 安裝Python使用Redis的庫 sudo pip install redis or sudo easy_install redis or 源碼安裝 詳見&#xff1a;https://github.com/WoLpH/redis-py 1.1 操作模式 redis-py提供兩個類Redis和StrictRedis用于實現Redis的命令&#xff0c;StrictRedis用于實現大…

android 代碼寫命令,monkey基本命令及腳本編寫(示例代碼)

Monkey 是Android自帶的黑盒測試工具&#xff0c;一般通過隨機觸發界面事件&#xff0c;來確定應用是否會發生異常&#xff0c;多用于android應用的穩定性、壓力測試基本命令&#xff1a;adb shell monkey [options] usage: monkey [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] .…

js更新數組對象_7 種Vue 數據已更新而頁面沒有更新的情況及深化總結(收藏)

作者&#xff1a;前端1943鏈接&#xff1a;https://segmentfault.com/a/1190000022772025如果你發現你自己需要在 Vue 中做一次強制更新&#xff0c;99.9% 的情況&#xff0c;是你在某個地方做錯了事。1. Vue 無法檢測實例被創建時不存在于 data 中的 property原因&#xff1a;…

從P560小型機B181201B故障代碼識別手把手詳解

背景&#xff1a;生產小型機發生宕機事件&#xff0c;現場發現液晶面板存在B181201B代碼&#xff0c;可是查看網絡&#xff0c;未見有權威的參考文章&#xff0c;通過管理口登錄HMC管理界面&#xff0c;發現錯誤代碼B181201B&#xff0c;同時提示可能是電源故障&#xff0c;后登…

Java反射中method.isBridge() 橋接方法

橋接方法是 JDK 1.5 引入泛型后&#xff0c;為了使Java的泛型方法生成的字節碼和 1.5 版本前的字節碼相兼容&#xff0c;由編譯器自動生成的方法。我們可以通過Method.isBridge()方法來判斷一個方法是否是橋接方法。 假定接口 public interface SuperClass<T> {void met…