欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android內(nèi)部存儲與外部存儲的示例講解

 更新時間:2023年03月20日 11:27:23   作者:Dormiveglia-flx  
內(nèi)部存儲和外部存儲的概念隨著Android版本的更新也在發(fā)生不斷的變化。最早的內(nèi)部存儲指的是系統(tǒng)自帶的ROM存儲,外部存儲指的是外置的Sdcard或者通過OTG掛在的USB存儲

什么是內(nèi)部存儲和外部存儲

1.內(nèi)部存儲與外部存儲的存儲介質(zhì):

內(nèi)部存儲的介質(zhì):RAM(內(nèi)存) + 內(nèi)部ROM

外部存儲的介質(zhì):外部ROM + SDCard(TS卡等等)。

2.內(nèi)部存儲與外部存儲的存儲特點(diǎn):

一般來說,以/data開頭的是內(nèi)部存儲。且內(nèi)部存儲不需要任何權(quán)限。

例如:

  • /data/data/< applicationId >/shared_prefs
  • /data/data/< applicationId >/databases
  • /data/data/< applicationId >/files // 通過context.getFilesDir() 獲取該目錄
  • /data/data/< applicationId >/cache //通過context.getCacheDir() 獲取該目錄

內(nèi)部存儲需要關(guān)注的文件夾:

app文件夾(未root無法打開):存放著所有app的apk文件夾

data文件夾:內(nèi)部都是app的包名,存儲著應(yīng)用程序相關(guān)的數(shù)據(jù),例如 data/data/包名/(shared_prefs、database、files、cache)

Android SDK提供了幾個常見的內(nèi)部存儲文件的權(quán)限

  • Context.MODE_PRIVATE :私有方式存儲,其他應(yīng)用無法訪問,覆蓋舊的同名文件
  • Context.MODE_APPEND:私有方式存儲,若有舊的同名文件,則在該文件上追加數(shù)據(jù)

一般來說,外部存儲會放在storage文件夾下或者mnt文件夾下。且需要安卓的權(quán)限。

例如:

私有外部存儲

  • /storage/emulated/0/Android/data/< applicationId >/files/Music //Context.getExternalFilesDir() 包含如Music等文件夾
  • /storage/emulated/0/Android/data/< applicationId >/cache //Context.getExternalCacheDir 外部緩存文件

以及共有外部存儲

/storage/emulated/0 Environment.getExternalStorageDirectory()

/storage/emulated/0/Pictures

Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)

外部存儲需要注意的文件夾即外部存儲的分類:

storage中有一個sdcard文件夾,sdcard下面可以分兩類存儲:

外部共有存儲(共有目錄):里面常見的有Pictures、Download等文件夾.

外部私有存儲(私有目錄):系統(tǒng)中的數(shù)據(jù)。

內(nèi)部存儲與外部存儲的文件夾:

3.內(nèi)部存儲與外部存儲,釋放內(nèi)存方面的總結(jié):

內(nèi)部存儲:隨應(yīng)用卸載被刪除。外部存儲:

1.公有目錄:存放一些下載的視頻文件等,比如還有movies,fictures,music等公有的一些文件目錄。

2.私有目錄:隨應(yīng)用卸載被刪除。

內(nèi)部存儲與外部存儲的代碼示例

內(nèi)部存儲

				// 存
 				FileOutputStream fos = null;
                try {
                    //第一個參數(shù):文件名
                    //第二個參數(shù):表示文件輸出的類型 這里選擇Context.MODE_PRIVATE每次生成相同的文件名,則覆蓋原有的文件
                    fos = openFileOutput('test', Context.MODE_PRIVATE);
                    String nameAndPassword = username + "." + password;
                    byte[] bytes = nameAndPassword.getBytes();
                    fos.write(bytes);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (fos != null) {
                        try {
                            fos.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
				// 取
				FileInputStream fis = null;
                try {
                    fis = openFileInput(fileName);
                    //fis.available() 判斷文件有多少個字節(jié)
                    byte[] bytes = new byte[fis.available()];
                    while (fis.read(bytes) != -1) {
                        String message = new String(bytes);
                        String[] split = message.split("\\.");
                        tv_message.setText("用戶名:" + split[0] + "\n" + "密碼:" + split[1]);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }

外部存儲

// 獲取外部存儲地址的位置并創(chuàng)建文件:
new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
				// 存
				OutputStream outputStream = null;
                try {
                        outputStream = new FileOutputStream(new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), 'test2'));
                        String nameAndPassword = username + "." + password;
                        byte[] bytes = nameAndPassword.getBytes();
                        outputStream.write(bytes);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (outputStream != null) {
                        try {
                            outputStream.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }
				// 取
				 FileInputStream fis = null;
                try {
                    //第一個參數(shù):文件目錄 第二個參數(shù):文件名
                    //getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)對應(yīng)的路徑為:
                    // /storage/emulated/0/Android/data/com.example.customviewproject/files/Download
                    File file = new File(getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName);
                        fis = new FileInputStream(file);
                        //判斷當(dāng)前文件的字節(jié)個數(shù)
                        byte[] bytes = new byte[fis.available()];
                        while (fis.read(bytes) != -1) {
                            String message = new String(bytes);
                            String[] split = message.split("\\.");
                            tv_message.setText("用戶名:" + split[0] + "\n" + "密碼:" + split[1]);
                        }
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    if (fis != null) {
                        try {
                            fis.close();
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                }

到此這篇關(guān)于Android內(nèi)部存儲與外部存儲的示例講解的文章就介紹到這了,更多相關(guān)Android內(nèi)部存儲與外部存儲內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Android?Service啟動流程刨析

    Android?Service啟動流程刨析

    這幾天分析了一下的啟動過程,于是乎,今天寫一下Service是如何啟動的;?給我的感覺是這些啟動過程并不復(fù)雜,千萬不要被一坨一坨的代碼嚇住了,雖然彎彎繞繞不少,重載函數(shù)一個接著一個,就向走迷宮一樣,但只要抓住主線閱讀,很快就能找到出口
    2022-08-08
  • Android應(yīng)用中繪制圓形頭像的方法解析

    Android應(yīng)用中繪制圓形頭像的方法解析

    這篇文章主要介紹了Android應(yīng)用中繪制圓形頭像的方法解析,文后還順帶介紹了Android App常用圖標(biāo)尺寸規(guī)范,需要的朋友可以參考下
    2016-02-02
  • Android 動態(tài)顯示和隱藏狀態(tài)欄詳解及實例

    Android 動態(tài)顯示和隱藏狀態(tài)欄詳解及實例

    這篇文章主要介紹了Android 動態(tài)顯示和隱藏狀態(tài)欄的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android實現(xiàn)自動播放圖片功能

    Android實現(xiàn)自動播放圖片功能

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)自動播放圖片功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Flutter啟動流程的深入解析

    Flutter啟動流程的深入解析

    這篇文章主要給大家介紹了關(guān)于Flutter啟動流程的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android入門之計時器Chronometer的使用教程

    Android入門之計時器Chronometer的使用教程

    Chronometer是一個簡單的定時器,你可以給它一個開始時間,并以此定時。本文將利用個簡單的示例為大家講解一下它的使用,感興趣的小伙伴可以嘗試一下
    2022-11-11
  • Android App中進(jìn)行語言的切換

    Android App中進(jìn)行語言的切換

    這篇文章主要介紹了Android App中如何進(jìn)行語言的切換,幫助大家更好的理解和學(xué)習(xí)使用Android app,感興趣的朋友可以了解下
    2021-03-03
  • Android入門之使用RecyclerView完美實現(xiàn)瀑布流界面詳解

    Android入門之使用RecyclerView完美實現(xiàn)瀑布流界面詳解

    網(wǎng)上充滿著不完善的基于RecyclerView的瀑布流實現(xiàn),要么根本是錯的、要么就是只知其一不知其二。本文就來用RecyclerView完美實現(xiàn)瀑布流界面,希望大家有所幫助
    2023-02-02
  • 詳解Android的Handler機(jī)制原理

    詳解Android的Handler機(jī)制原理

    Android的Handler機(jī)制是一種用于處理和調(diào)度線程之間消息傳遞的機(jī)制,通常用于在后臺線程中執(zhí)行任務(wù),并將結(jié)果返回到主線程中更新UI,Handler機(jī)制的核心是Message和MessageQueue,以及Looper,本文給大家詳細(xì)講解了Android的Handler機(jī)制原理,需要的朋友可以參考下
    2023-10-10
  • 基于Android Flutter編寫貪吃蛇游戲

    基于Android Flutter編寫貪吃蛇游戲

    貪吃蛇是一款足夠經(jīng)典的游戲。本文將利用Android中的Flutter編寫這一經(jīng)典的小游戲,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-03-03

最新評論