sd卡操作工具类 有更新!

  hehaitao074

    public class SDCardHelper {
    	private static String TAG = "SDCardHelper";
    
    	/*
    	 * 判断sdcard是否挂载
    	 */
    	public static boolean isSDCardMounted() {
    		return Environment.getExternalStorageState().equals(
    				Environment.MEDIA_MOUNTED);
    	}
    
    	/*
    	 * 获取sdcard绝对物理路径
    	 */
    	public static String getSDCardPath() {
    		if (isSDCardMounted()) {
    			return Environment.getExternalStorageDirectory().getAbsolutePath();
    		} else {
    			return null;
    		}
    	}
    
    	/*
    	 * 获取sdcard的全部的空间大小。返回MB字节
    	 */
    	public static long getSDCardSize() {
    		if (isSDCardMounted()) {
    			StatFs fs = new StatFs(getSDCardPath());
    			long size = fs.getBlockSize();
    			long count = fs.getBlockCount();
    			return size * count / 1024 / 1024;
    		}
    		return 0;
    	}
    
    	/*
    	 * 获取sdcard的剩余的可用空间的大小。返回MB字节
    	 */
    	public static long getSDCardFreeSize() {
    		if (isSDCardMounted()) {
    			StatFs fs = new StatFs(getSDCardPath());
    			long size = fs.getBlockSize();
    			long count = fs.getAvailableBlocks();
    			return size * count / 1024 / 1024;
    		}
    		return 0;
    	}
    
    	/*
    	 * 将文件(byte[])保存进sdcard指定的路径下
    	 */
    	public static boolean saveFileToSDCard(byte[] data, String dir,
    			String filename) {
    		BufferedOutputStream bos = null;
    		if (isSDCardMounted()) {
    			Log.i(TAG, "==isSDCardMounted==TRUE");
    			File file = new File(getSDCardPath() + File.separator + dir);
    			Log.i(TAG, "==file:" + file.toString() + file.exists());
    			if (!file.exists()) {
    				boolean flags = file.mkdirs();
    				Log.i(TAG, "==创建文件夹:" + flags);
    			}
    			try {
    				bos = new BufferedOutputStream(new FileOutputStream(new File(
    						file, filename)));
    				bos.write(data, 0, data.length);
    				bos.flush();
    				return true;
    			} catch (Exception e) {
    				e.printStackTrace();
    			} finally {
    				try {
    					bos.close();
    				} catch (IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    		return false;
    	}
    
    	/*
    	 * 已知文件的路径,从sdcard中获取到该文件,返回byte[]
    	 */
    	public static byte[] loadFileFromSDCard(String filepath) {
    		BufferedInputStream bis = null;
    		ByteArrayOutputStream baos = null;
    		if (isSDCardMounted()) {
    			File file = new File(filepath);
    			if (file.exists()) {
    				try {
    					baos = new ByteArrayOutputStream();
    					bis = new BufferedInputStream(new FileInputStream(file));
    					byte[] buffer = new byte[1024 * 8];
    					int c = 0;
    					while ((c = bis.read(buffer)) != -1) {
    						baos.write(buffer, 0, c);
    						baos.flush();
    					}
    					return baos.toByteArray();
    				} catch (Exception e) {
    					e.printStackTrace();
    				} finally {
    					try {
    						if (bis != null) {
    							bis.close();
    							baos.close();
    						}
    					} catch (IOException e) {
    						e.printStackTrace();
    					}
    				}
    			}
    		}
    		return null;
    	}
    }