編輯:關於Android編程
傲不可長,欲不可縱,樂不可極,志不可滿。—— 魏 徵
本講內容:SD卡
上一講中我們學習了Android的數據存儲采用File,但是這樣的數據是存儲在應用程序內的,即存儲的文件大小有一定要限制的,有時候我們需要存儲更大的文件,比如電影等,這就用到了我們的SDSard存儲卡。
一、在Android系統中,為我們提供了SDCard的一些相關操作,Environment類為我們提供了以下的幾個方法
vcmRlcj0="1" width="800" cellspacing="1" cellpadding="1">
public static File getDataDirectory ()
獲得Android下的data文件夾的目錄
public static File getDownloadCacheDirectory ()
獲得Android Download/Cache 內容的目錄
public static File getExternalStorageDirectory ()
獲得Android外部存儲器即SDCard的目錄
public static String getExternalStorageState ()
獲得Android外部存儲器的當前狀態
public static File getRootDirectory ()
獲得Android下的root文件夾的目錄
常用常量
String MEDIA_MOUNTED
當前Android的外部存儲器可讀可寫
String MEDIA_MOUNTED_READ_ONLY
當前Android的外部存儲器只讀
二、我們通過一個例子感受一下,代碼的講解都寫在注釋裡了
下面是res/layout/activity_main.xml 布局文件:
public class MainActivity extends Activity implements OnClickListener { private static final String FILE_NAME = "text.txt"; private Button write; private Button read; EditText edit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViews(); } private void findViews() { edit = (EditText) findViewById(R.id.edit); write = (Button) findViewById(R.id.write); read = (Button) findViewById(R.id.read); write.setOnClickListener(this); read.setOnClickListener(this); } public void onClick(View v) { switch (v.getId()) { case R.id.write: // 先判斷是否有SDCard if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { String content = edit.getText().toString(); try { // 獲取SDcard路徑 File dir = Environment.getExternalStorageDirectory(); // 獲取SDcard路徑名的絕對路徑名字符串。eg:/mnt/sdcard String sdcardPath = dir.getAbsolutePath(); Toast.makeText(MainActivity.this,"目錄為:" + sdcardPath, Toast.LENGTH_SHORT).show(); File file = new File(dir, FILE_NAME); // 以指定文件創建RandomAccessFile對象 RandomAccessFile raf = new RandomAccessFile(file, "rw"); // 將文件記錄指針移動最後 raf.seek(file.length()); // 輸出文件內容 raf.write(content.getBytes()); raf.close(); } catch (Exception e) { } } break; case R.id.read: if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { // 獲取SDcard路徑 StringBuilder sb = new StringBuilder(); try { File dir = Environment.getExternalStorageDirectory(); File file = new File(dir, FILE_NAME); InputStream inputStream = new FileInputStream(file); int len = 0; byte[] buffer = new byte[1024]; while ((len = inputStream.read(buffer)) != -1) { sb.append(new String(buffer, 0, len)); } Toast.makeText(MainActivity.this,"內容為:" + sb.toString(), Toast.LENGTH_SHORT).show(); // 關閉流 inputStream.close(); } catch (Exception e) { } } } } }
本講到這裡,謝謝大家!
Android:BroadcastReceiver注冊的方式分為兩種:靜態注冊動態注冊1. 靜態注冊在AndroidManifest.xml裡通過標簽聲明屬性說明:<
Android開發之Fragment學習 1.簡介: Fragment是Android 3.0引入的新API。 Fragment代表了 Activity的子模塊,因此可
目前的應用市場上,使用毛玻璃效果的APP隨處可見,比如用過微信語音聊天的人可以發現,語音聊天頁面就使用了高斯模糊效果。先看下效果圖: 仔細觀察上圖,我們可以發現
Android 線性布局: AbsoluteLayout布局和RelativeLayout布局。 1、絕對布局 AbsoluteLayout絕對定位Absolu