android在SD卡保存文件和文件夾

一、概述

外部存儲可以通過物理介質提供(如SD卡),也可以通過將內部存儲中的一部分封裝而成,設備可以有多個外部存儲實例。<借鑑>

安卓中在SD卡里面保存文件是很常見的,一般項目中會有保存圖片文件夾,音樂文件夾,視頻文件夾,聊天記錄等等。。。。

今天我們就從保存SD卡公共目錄,SD卡私有目錄,和保存文件個文件夾,來一步一步進行解析。

二、代碼

(測試手機華爲4.4.4)

首先看下Files工具類

1.//判斷是否有Sd卡
    public static boolean isSDCardMounted(){
        return Environment.getExternalStorageDirectory().equals("Environment.MEDIA_MOUNTED");
    }

2.//獲取SD卡根目錄
    public static String getSDCardBaseDir(){
        if (isSDCardMounted()) {
            return Environment.getExternalStorageDirectory().getAbsolutePath();
        }
        return null;

    }

//看下SD卡根目錄打印結果


其中這個emulated的意思是手機自帶存儲卡。並不是外置的存儲卡

三、首先把一張圖片保存到SD卡公共目錄上;

先介紹一個方法:getExternalStoragePublicDirectory(String type) 返回類型 Files

此方法是確定公共目錄下的具體目錄  例:type=Environment.DIRECTORY_PICTURES

//看下打印結果


首先從drawable中獲取小機器人圖片,首先獲取Resources類然後轉爲bitmap,在把bitmap轉爲byte[];

Resources res=getResources();

Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.ic_launcher);

private byte[] getbytes(Bitmap bm) {
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
        return baos.toByteArray();
    }

//往SD卡里面存儲,首先可以修改下圖片的名字,用系統時間來作爲圖片的名稱

private String initDate() {
        Date date=new Date(System.currentTimeMillis());
        SimpleDateFormat dateFormat=new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");
        return dateFormat.format(date)+".jpg";
    }

//此方法是確定公共目錄下的具體目錄  例:type=Environment.DIRECTORY_PICTURES
            File file=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);

現在已經確定好了公共目錄和文件名稱組合成文件的路徑

BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(file,initDate)));

try {
                bos = new BufferedOutputStream(new FileOutputStream(new File(file, initDate())));
                bos.write(byte);//此處就是你轉的字節數組byte
                bos.flush();
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                try {
                    bos.close();
                } catch (Exception e2) {
                }
            }
現在打印下圖片保存的完整路徑

公共目錄下圖片已經保存完畢。

2.2:現在在存入自定義目錄下

一般在項目中都會建一個自定義目錄來存放自己的東西

自定義目錄最關鍵的是:(獲取SD卡的絕對路徑)此處的淘寶就是文件名

File file=Environment.getExternalStorageDirectory().getAbsolutePath()+File.separator+taobao;

BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(new File(file,initDate)));

判斷是否此目錄,沒有的話就創建。其中mkdis()和mkir()是有區別的

  if (!file.exists()) {
file.mkdirs();// 遞歸創建自定義目錄
}
此處爲存儲圖片,接下來打印下路徑

try {
				bos = new BufferedOutputStream(new FileOutputStream(new File(
						file, fileName)));
				bos.write(data);
				bos.flush();
				return true;
			} catch (Exception e) {
				e.printStackTrace();
			} finally {
				try {
					bos.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章