android中資源文件的兩種訪問方式,Android_Android學習筆記-保存文件(Saving Files),Android設備有兩種文件存儲區域 - phpStudy...

Android學習筆記-保存文件(Saving Files)

Android設備有兩種文件存儲區域:

內部存儲和外部存儲 ("internal" and "external" storage)。

這名字來自早期Android,那時大多數Android設備提供兩種存儲方式:內置的非易失的內存(內部存儲)和可移動的存儲例如micro SD卡(外部存儲)。

一些設備將永久內存分為內部和外部兩部分,因此即使沒有外部存儲,依舊有兩種存儲空間。不管有沒有外部存儲,API的方法都是一樣的。

如我的手機小米2S是16G大小的RAM,不支持SD卡的拓展。它將存儲分為了內外兩部分,3.71G的系統存儲(即內部存儲),10.16G的內存設備(即外部存儲),如下圖所示:

內部存儲:

始終都是可用的

保存的文件只能被你的app以默認的方式訪問

卸載app,系統從內部存儲中刪除你app的所有文件

內部存儲適用于你不想用戶或其他app訪問你的文件

外部存儲:

不總是可用的(用戶可能將外部存儲以USB方式連接, 一些情況下會從設備中移除)

是全局可讀的(world-readable),因此一些文件可能不受控制地被讀取

卸載app,只刪除你存儲在getExternalFilesDir()目錄下的文件

外部存儲適用于不需要存儲限制的文件以及你想要與其他app共享的文件或者是允許用戶用電腦訪問的文件

app默認安裝在內部存儲中,通過指定android:installLocation 屬性值可以讓app安裝在外部存儲中。

獲取外部存儲權限:讀與寫:

...

讀:

...

在內部存儲保存文件不需要任何權限,你的app在內部存儲中總是有讀寫權限。

在內部存儲中保存文件:

獲取適當的目錄:

getFilesDir() app文件在內部存儲中的目錄

eg:

File file = new File(context.getFilesDir(), filename);

getCacheDir() app臨時緩存文件在內部存儲中的目錄

調用openFileOutput()獲取FileOutputStream寫入文件到內部目錄

eg:

String filename = "myfile";

String string = "Hello world!";

FileOutputStream outputStream;

try {

outputStream = openFileOutput(filename, Context.MODE_PRIVATE);

outputStream.write(string.getBytes());

outputStream.close();

} catch (Exception e) {

e.printStackTrace();

}

調用 createTempFile()緩存一些文件:

public File getTempFile(Context context, String url) {

File file;

try {

String fileName = Uri.parse(url).getLastPathSegment();

file = File.createTempFile(fileName, null, context.getCacheDir());

catch (IOException e) {

// Error while creating file

}

return file;

}

在外部存儲中保存文件:

由于外部存儲不總是可用的,正如上面所提到的,用戶可能移除了SD卡或USB模式連接了電腦。所有在訪問之前需要確認外部存儲是可用的。

可以調用 getExternalStorageState() 返回外部存儲的狀態,如果返回的是MEDIA_MOUNTED,則可以讀寫在外部存儲的文件。

//判斷外部存儲是否可以讀寫

public boolean isExternalStorageWritable() {

String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state)) {

return true;

}

return false;

}

//判斷外部存儲是否至少可以讀

public boolean isExternalStorageReadable() {

String state = Environment.getExternalStorageState();

if (Environment.MEDIA_MOUNTED.equals(state) ||

Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) {

return true;

}

return false;

}

外部存儲可以被用戶或其他app訪問,我們可以保存兩種文件到外部存儲:

1.公共文件(public files)

可以自由地被用戶或其他app訪問的文件,當用戶卸載app時,這些文件依然存在。

調用 getExternalStoragePublicDirectory()獲得目錄,保存公共文件到外部存儲:

public File getAlbumStorageDir(String albumName) {

// 獲得用戶公共的圖片目錄

File file = new File(Environment.getExternalStoragePublicDirectory(

Environment.DIRECTORY_PICTURES), albumName);

if (!file.mkdirs()) {

Log.e(LOG_TAG, "Directory not created");

}

return file;

}

2.私有文件(private files)

屬于你app的文件,當用戶卸載時,這些文件將被刪除。

調用getExternalFilesDir() 獲得適當的目錄,保存私有文件到外部存儲:

public File getAlbumStorageDir(Context context, String albumName) {

// 獲得應用私有的圖片目錄

File file = new File(context.getExternalFilesDir(

Environment.DIRECTORY_PICTURES), albumName);

if (!file.mkdirs()) {

Log.e(LOG_TAG, "Directory not created");

}

return file;

}

刪除文件:

myFile.delete();

刪除保存在內部存儲中的文件:

myContext.deleteFile(fileName);

當用戶卸載app時,Android系統會刪除下列文件:

1.所有保存在內部存儲中的文件

2.所有用getExternalFilesDir()保存的文件

我們應該刪除所有用getCacheDir() 生成的文件以及不再需要的文件相關閱讀:

Andriod 獲取電池的信息實例代碼

css3彈性盒模型實例介紹

SQLSERVER 根據地圖經緯度計算距離差示例

WEB在模態窗體里導出或下載文件功能代碼

Win10開始菜單與任務欄的新概念設計圖:音樂應用動態磁貼采用交互式設計

javascript屏蔽右鍵代碼

MongoDB db.serverStatus()輸出內容中文注釋

js實現匹配時換色的輸入提示特效代碼

Win10讓任務欄中間相同程序圖標不合并分開的方法

詳解javascript實現瀑布流絕對式布局

在CentOS上配置Java環境變量的教程

C#中的委托使用

JavaScript模擬鼠標右鍵菜單效果

一些有用的meta設置方法(必看)

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

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

相關文章

Struts2.3,s:iterator,c:forEach遍歷map中的list集合

一&#xff1a;首先是<s:iterator></s:iterator>遍歷map中的list集合&#xff0c;代碼如下&#xff1a; 1.首先是后臺代碼&#xff0c;包括定義map和給map中賦值&#xff0c;代碼如下&#xff1a; package cn.gov.csrc.cms.action;import java.util.HashMap; impo…

android 判斷對象,Android網絡判斷知識小結

Android中判斷當前網絡是否可用應用場景&#xff1a;實現判斷當前網絡是否可用當前有可用網絡&#xff0c;如下圖&#xff1a;當前沒有可用網絡&#xff0c;如下圖&#xff1a;實現步驟&#xff1a;1、獲取ConnectivityManager對象Context context activity.getApplicationCon…

android fragment動畫,Fragment 的過場動畫

Fragment 的過場動畫Android,Fragment,動畫2018.08.03在 Android 開發中&#xff0c;有些應用對頁面的過場動畫要求比較高&#xff0c;他們中期望給用戶提供一個良好的用戶體驗。適當的過場動畫可以減少用戶在頁面加載時期等待的焦慮&#xff0c;因為讓他們看一個動畫&#xff…

android 聯系人批量插入,GitHub - Atinerlengs/InsertDemo: android 簡單的批量插入通話記錄、聯系人、短信demo...

[toc]批量插入批量插入通話記錄下面是添加通話數據的代碼&#xff0c;我們自己去構造Tb_calllogs數據&#xff0c;里面可以添加通話記錄數據字段&#xff0c;由于是個簡單的demo&#xff0c;所以只加了number、callType、date、callDuration。/*** 添加通話數據** throws Remot…

html頁面按鈕刪除一條數據庫,需要添加一個刪除按鈕到一個HTML表格從數據庫中刪除記錄與消息...

IDNameCodeActiveEdit<?php foreach($nurseries->result() as $nursery) { ?><?php echo $nursery->id; ?><?php echo $nursery->name; ?><?php echo $nursery->code; ?><?php echo set_bool($nursery->active); ?><…

EL表達式, JSTL, 獲取map集合中key的value

序言&#xff1a;今天在項目中使用了map存儲list和普通對象&#xff0c;但是在jsp中顯示的時候出來問題&#xff0c;后經查閱&#xff0c;終于解決&#xff0c;現在記錄一下&#xff0c;以便以后查閱&#xff1a; 一&#xff1a;后臺代碼如下&#xff1a; package cn.gov.csrc…

html選擇器是什么,CSS3選擇器是什么?

首先我們來看一下displaynone的意思是什么&#xff1f;display:none的意思&#xff1a;隱藏元素并脫離文檔&#xff0c;流就是隱藏該區域&#xff0c;不占實際空間&#xff0c;但對后臺來說真實存在&#xff0c;可以獲取被隱藏的元素簡單的來說就是將元素設置為none的時候既不會…

零基礎學計算機408,又一所重點大學改考408!21計算機考研會全面408嗎?

【北京工業大學】于7月17日發布《關于北京工業大學2021年全國碩士研究生招生考試部分考試科目及考試大綱調整的通知》&#xff0c;要點如下&#xff1a;文法學部0401教育學專業課改考 311統教育學信息學部計算機學院0812計算機科學與技術0839網絡空間安全0854電子信息 (專業學位…

國貿專業要考計算機二級,國貿專業考計算機二級有沒有必要

類似問題答案我是自動化專業的學生&#xff0c;大一的時候有沒有必要考計算機二級證書計算機二級 雖然不是很重要 但是考了也是有好處的 自動化的跟計算機聯系非常大 二級證不怎么重要 但是C語言很重要 對于你們 希望你還是去考個二級作為學習建筑類專業的學生,如果考試計算機二…

edge如何導入html文件收藏夾,edge瀏覽器收藏夾如何導入?edge瀏覽器收藏夾導入方法...

在使用瀏覽器的時候需要用戶進行多方便的導入和使用&#xff0c;這樣在數據共享和傳遞的時候才會更加的方便&#xff0c;那么這款軟件要如何操作使用呢&#xff0c;有興趣的用戶可以使用手機快速申請使用&#xff0c;幫助用戶的生活&#xff0c;讓用戶的生活更加的便捷&#xf…

中職生計算機專業600分,來了!超全盤點高職分類中500-600分及以上的高中生能報的專業和院校名單!...

福建高職分類考試志愿填報4月27日開始&#xff0c;招生計劃不斷更新中關注【福建高考】&#xff0c;免費使用志愿填報工具參加高職分類的同學們志愿填報在即&#xff0c;你定好目標了嗎&#xff1f;本期&#xff0c;小編為大家盤點高職分類各分段的高中生能報哪些專業和大學~一…

Oracle中通過:觸發器,存儲過程,Function調用實現解析Clob字段類型中存儲的xml字符串...

摘要&#xff1a;最近項目中用到了存儲過程&#xff0c;觸發器&#xff0c;Function&#xff0c;由于以前沒怎么用過&#xff0c;所以查資料&#xff0c;請教同事&#xff0c;最后總算是把問題解決了&#xff0c;問題是這樣的&#xff0c;數據庫中有三張表一張是存放從遠程服務…

plc采用計算機結構如何理解,PLC的基本結構

plc實質是一種專用于工業控制的計算機&#xff0c;其硬件結構基本上與微型計算機相同&#xff0e;a. 中央處理單元(CPU)中央處理單元(CPU)是PLC的控制中樞。它按照PLC系統程序賦予的功能接收并存儲從編程器鍵入的用戶程序和數據&#xff1b;檢查電源、存儲器、I/O以及警戒定時器…

華為手機怎么用計算機玩隱藏空間,玩法 | 華為手機這五個隱藏功能,用過的都說好!...

原標題&#xff1a;玩法 | 華為手機這五個隱藏功能&#xff0c;用過的都說好&#xff01;歡迎轉載&#xff0c;請注明出處&#xff0c;抄襲必究&#xff01;近年來國產手機都很爭氣&#xff0c;華為、小米、OPPO、vivo都迅速的成長起來&#xff0c;讓大家告別了瘋搶蘋果的時代。…

Html做文章查看上一篇下一篇功能,SDCMS文章添加上一篇、下一篇

SDCMS是一款小型ASP內容管理系統管理開源程序&#xff0c;雖然是小型的&#xff0c;但是主要功能都俱備。在細節方面&#xff0c;該款開源程序沒有對內置標簽進行統一的管理&#xff0c;不方便日后功能的修改&#xff0c;如果需要修改或者添加&#xff0c;需要去官方網站上查閱…

微型計算機簡化結構,基于FPGA的簡易微型計算機結構分析與實現

0 引言通常&#xff0c;人們對微型計算機的工作原理及硬件結構的了解來源于書本知識&#xff0c;深入理解掌握其功能特點比較困難&#xff0c;要自己親手去做一個類似功能的微型計算機更是不可能。隨著可編程邏輯器件的廣泛應用&#xff0c;為數字系統的設計帶來了極大的靈活性…

django 返回ajax html,Django 前臺通過json 取出后臺數據

前臺通過json 取出后臺數據步驟1:后臺數據通過 JSON 序列化成字符串注意&#xff1a;1、json是1個字符串2、通過json.dumps(xxx) 序列化成 1個字符串的 字典對象views.pydef ajax(request):if request.methodPOST:print(request.POST)data{status:0,msg:請求成功,data:[11,22,3…

Toad for Oracle 導入MIP.dmp文件時:報內存不足時的解決辦法:

摘要&#xff1a;最近在使用Oracle數據庫開發項目&#xff0c;其中在用Toad for Oracle連接操作Oracle11g的時候出現了問題&#xff0c;問題是這樣的&#xff1a;在數據庫管理員的連接下導入已經建立的用戶的dmp文件&#xff0c;會報內存不足的問題&#xff0c;最后經查&#x…

長春金橋計算機學校,金橋學校2017年招生簡章

原標題&#xff1a;金橋學校2017年招生簡章金橋學校創建于2000年5月&#xff0c;現有45個教學班&#xff0c;在校學生2700余人。近年來&#xff0c;學校以“培養高素質的現代中國人”為辦學目標&#xff0c;堅持“德育為首、做人第一”的辦學理念&#xff0c;積極改革創新&…

計算機聯鎖軟件畢設論文,鐵路信號計算機聯鎖系統()畢設論文.doc

鐵路信號計算機聯鎖系統()畢設論文PAGE北京交通大學信號10級畢業論文題 目 微機聯鎖系統故障及處理分析專 業 鐵道信號班 級 10信號姓 名 陳 勇二0一二 年 七 月摘 要計算機聯鎖系統是實現鐵路現代化和自動化的基礎設施之一&#xff0c;是一種高效、安全的車站聯鎖設備&#xf…