【Android】14.2 外部檔案儲存體和讀取

來源:互聯網
上載者:User

標籤:

分類:C#、Android、VS2015;

建立日期:2016-02-27 一、簡介

1、基本概念

內部儲存的私人可用儲存空間一般都不會很大,對於容量比較大的檔案,例如視頻等,應該將其儲存在外部存放裝置(SD卡)上。

注意,不要將手機記憶體和手機插入入的儲存卡(手機卡、SD卡)混淆在一起,記憶體是不能持久儲存的,一關機所有資訊就全部丟失了,而內部儲存(移動經銷商賣的手機卡,容量小,但是沒有它打不了電話)、外部儲存(SD卡,容量大,各種檔案都能儲存)都是可以持久儲存的裝置,因此才叫檔案儲存體。

可以通過AOD模擬器指定要建立的SD卡的容量,具體見第2章的介紹。

下面是儲存在SD卡上的熱門檔案夾:

  • Alarms:儲存用於警告的音頻音效檔(audio files)。
  • Dcim:儲存相機拍攝的圖片檔案和視頻檔案(pictures and videos)。
  • Downloads:儲存使用者下載的各種類型的檔案。
  • Movies:儲存媒體瀏覽器可搜尋到的電影檔案。
  • Music:儲存媒體瀏覽器可搜尋到的音樂檔案。
  • Notifications:儲存用於通知的音頻檔案,例如簡訊通知等。
  • Pictures:儲存媒體瀏覽器可搜尋到的圖片檔案。
  • Podcasts:儲存部落格檔案。
  • Ringtones:儲存手機鈴聲音頻檔案。

注意:在Android 6.0中,必須提供外部儲存的讀寫權限才能對SD卡檔案夾下的檔案進行操作。

通過Environment類的靜態屬性可指定SD卡上的這些檔案夾類型。

調用GetExternalStorgeState方法可檢測SD卡的狀態。使用外部儲存(SD卡)之前,最好先判斷它是否可用,如果可用,直接通過普通的檔案操作對其進行讀寫即可。

2、如何將檔案複製到模擬器的SD卡上

找到C:\Users\你的使用者名稱\.android\avd\Galaxy_Api23.avd\sdcard.img,用虛擬光碟機軟體(比如UltraISO)開啟這個檔案,然後複製硬碟上的檔案,將其粘貼到SD卡對應的目錄下,儲存即可。 二、樣本2運行

運行後,在模擬器上查看SD卡上的Download檔案夾,就會發現已經寫入了a1.txt檔案。

三、主要設計步驟

1、檢查對外部儲存的讀寫權限

外部儲存需要使用者賦予對應的讀寫權限才可以通過程式讀取和寫入。

滑鼠雙擊Properties檔案夾,在彈出的視窗中,查看是否已經選中外部儲存的寫入權限(WRITE_EXTERNAL_STORAGE),如果沒有選中,選中它。

由於第3章的例子中已經賦予了寫入權限,因此你看到的應該是已經選中了。另外,如果使用者給應用程式賦予了對外部儲存的寫入權限,那麼也意味著同時給這個應用程式賦予了讀許可權(READ_EXTERNAL_STORAGE),因此讀許可權不需要再選中。

2、添加ch1402_Main.axml檔案

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <Button        android:id="@+id/MyButton"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="寫入檔案到SD卡的Download檔案夾" /></LinearLayout>

3、添加ch1402MainActivity.cs檔案

using Android.App;using Android.OS;using Android.Widget;namespace MyDemos.SrcDemos{    [Activity(Label = "【例14-2】外部檔案存取")]    public class ch1402MainActivity : Activity    {        protected override void OnCreate(Bundle savedInstanceState)        {            base.OnCreate(savedInstanceState);            SetContentView(Resource.Layout.ch1402_Main);            Button button = FindViewById<Button>(Resource.Id.MyButton);            button.Click += delegate            {                string rootDir = Android.OS.Environment.ExternalStorageDirectory.Path;                string downloadDir = Android.OS.Environment.DirectoryDownloads;                string filePath = $"{rootDir}/{downloadDir}/a1.txt";                if (Android.OS.Environment.ExternalStorageState == Android.OS.Environment.MediaMounted)                {                    string text = "Hello,張三!";                    System.IO.File.WriteAllText(filePath, text, System.Text.Encoding.UTF8);                    Toast.MakeText(this, $"檔案已寫入到:\n{filePath}", ToastLength.Long).Show();                }            };        }    }}

【Android】14.2 外部檔案儲存體和讀取

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.