編輯:關於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廣播注冊方式總結
Android:BroadcastReceiver注冊的方式分為兩種:靜態注冊動態注冊1. 靜態注冊在AndroidManifest.xml裡通過標簽聲明屬性說明:<
Android開發之Fragment詳解
Android開發之Fragment學習 1.簡介: Fragment是Android 3.0引入的新API。 Fragment代表了 Activity的子模塊,因此可
Android 高仿微信語音聊天頁面高斯模糊(毛玻璃效果)
目前的應用市場上,使用毛玻璃效果的APP隨處可見,比如用過微信語音聊天的人可以發現,語音聊天頁面就使用了高斯模糊效果。先看下效果圖: 仔細觀察上圖,我們可以發現
Android AbsoluteLayout和RelativeLayout布局詳解
Android 線性布局: AbsoluteLayout布局和RelativeLayout布局。 1、絕對布局 AbsoluteLayout絕對定位Absolu