安卓SD卡的操作

/**
	 * 得到常用路径
	 */
	public void getDir(){
		// /mnt/sdcard
		File root=Environment.getExternalStorageDirectory();

		// /system
		File root=Environment.getRootDirectory();

		// /cache
		File root=Environment.getDownloadCacheDirectory();

		// /data
		File root=Environment.getDataDirectory();

		// /storage/emulated/0/Music
		//String type=Environment.DIRECTORY_MUSIC;

		//String type=Environment.DIRECTORY_PICTURES;
		File root=Environment.getExternalStoragePublicDirectory(type);

		System.out.println("root="+root.getAbsolutePath());
	}

	/**
	 * 获取手机SDCard的总容量
	 * @return
	 */
	public long getSDCardTotalCapacity(){
		if(this.isSDCardUse()){
			// /mnt/sdcard
			File root=Environment.getExternalStorageDirectory();
			//根据SDCard的路径得到状态文件系统对象
			StatFs statFs=new StatFs(root.getPath());

			//得到每一块数据的大小,以字节为单位
			long blockSize=statFs.getBlockSize();
			System.out.println("blockSize="+blockSize);

			//得到当前手机SDCard一共有多少个数据块
			long blockCount=statFs.getBlockCount();
			System.out.println("blockCount="+blockCount);

			//return blockCount*blockSize;//默认以字节为单位
			return blockCount*blockSize/1024/1024/1024;//默认以字节为单位,换算成GB

		}else{
			throw new RuntimeException("当前手机SDCard不存在或者不可用!");
		}
	}

	/**
	 * 获取手机SDCard可用容量
	 * @return
	 */
	public long getSDCardAvailableCapacity(){
		if(this.isSDCardUse()){
			// /mnt/sdcard
			File root=Environment.getExternalStorageDirectory();
			//根据SDCard的路径得到状态文件系统对象
			StatFs statFs=new StatFs(root.getAbsolutePath());

			//得到每一块数据的大小,以字节为单位
			int blockSize=statFs.getBlockSize();

			//得到当前手机SDCard可用容量的SDCard块数
			int availableBlocks=statFs.getAvailableBlocks();

			//return availableBlocks*blockSize;//默认以字节为单位
			return availableBlocks*blockSize/1024/1024/1024;//默认以字节为单位,换算成GB

		}else{
			throw new RuntimeException("当前手机SDCard不存在或者不可用!");
		}
	}

	/**
	 * 获取手机SDCard剩余容量
	 * @return
	 */
	public long getSDCardFreeCapacity(){
		if(this.isSDCardUse()){
			// /mnt/sdcard
			File root=Environment.getExternalStorageDirectory();
			//根据SDCard的路径得到状态文件系统对象
			StatFs statFs=new StatFs(root.getAbsolutePath());

			//得到每一块数据的大小,以字节为单位
			int blockSize=statFs.getBlockSize();

			//得到当前手机SDCard可用容量的SDCard块数
			int freeBlocks=statFs.getFreeBlocks();

			//return freeBlocks*blockSize;//默认以字节为单位
			return freeBlocks*blockSize/1024/1024/1024;//默认以字节为单位,换算成MB

		}else{
			throw new RuntimeException("当前手机SDCard不存在或者不可用!");
		}
	}
}

  

时间: 2024-10-17 15:36:53

安卓SD卡的操作的相关文章

关于读、写SD卡的操作

1.点击按钮将assets文件夹中的内容复制到SD卡中. private void copyToSD() { // 检测SD卡是否挂载  Environment.MEDIA_MOUNTED 表示被挂载 // Environment.getExternalStorageState() 将返回sd卡的状态 if(! Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) { Toast.makeText(thi

Adroid学习之SD卡的操作(1)

随着android的学习我们通过Context的openFileInput或是openFileOutput来打开文件的输入输出流时,程序锁打开的都是应用程序的数据文件夹里面的文件,这样所存储的文件的大小可能比较有限——毕竟手机内置的存储空间是有限的. 为了更好的存取应用程序的大文件数据,应用程序需要读写SD卡上的文件.通过SD卡,大大的扩充了手机的存储能力.所以咱们就先来学习如何读写sd卡上的文件. 读.写SD卡上的文件通常有以下几个步骤:    (1)调用Environment的getExte

Android入门开发之SD卡读写操作(转)

SD卡的读写是我们在开发android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 [java] view plaincopy String  sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); 2. 在SD卡上创建文件夹目录 [java] view plaincopy /** * 在SD卡上创建目录 */ public File createDirOnSDC

linux下sd卡的操作(fdisk)

当你拿到一张sd卡,需要在linux环境下格式化.分区,修改参数的时候,请看过来. ubuntu虚拟机环境下 1,插入,用力点,因为有可能接触不良,导致电脑不识别. 2,cat /proc/partions 或者fdisk -l    (有些可能需要进入获得管理员权限,deei~命令前+sudo就行) 比如:cat /proc/partitions major minor  #blocks  name 2        0          4 fd0   8        0  1677721

安卓 SD卡写入文件后不能立即显示被写入的文件解决方法

每次通过输出流往SD卡写入文件,连接上电脑,用MTP的方式模拟一个移动磁盘,打开磁盘却没有这样一个文件,而通过adb的方式查看就有,造成这个现象的原因是,每次写入之后,MTP的数据库并没有更新,因为更新一次MTP数据库需要的带价比较大,所以只有在重启,挂载和用户手动发送Intent出发,故存入文件后需要手动发送Intent广播,出发一下MTP数据库的更新. /** * 出发扫描 mtp下的文件,在保存文件到 sd卡下后,不能显示,故这里触发一下扫描机制,让手机连上电脑后,就可以读出文件了 * @

android中对sd卡的 操作文件问题 创建目录 创建文件到指定目录

步骤 1 获取sd卡的路径 File root =Environment.getExternalStorageDirectory(); 2 确定要写文件的路径 String path =root.getAbsolutePath()+"/test2"+"/test3": 3 再把路径转化为file File file =new File(path); 4创建目录 file.mkdir(); 5在上述指定的目录写指定的文件 File file1 = new File(f

Android USB大容量存储时SD卡状态监听(转)

对SD卡状态监听,到现在为止我知道的有两种方式: 1.注册StorageEventListener来监听sd卡状态 StorageEventListener中有onStorageStateChanged()方法,当sd卡状态改变时,此方法会调用,对各状态的判断一般会用到Environment类,此类中包含的有关sd卡状态的常量有: MEDIA_BAD_REMOVAL:表明SDCard 被卸载前己被移除 MEDIA_CHECKING:表明对象正在磁盘检查 MEDIA_MOUNTED:表明sd对象是

[i.MX6q]i.MX6q处理器,linux操作系统平台搭建 从SD卡启动系统

转自:http://www.07net01.com/linux/2016/02/1232094.html 参照1:http://blog.csdn.net/girlkoo/article/details/44536447 参照2:http://blog.csdn.net/girlkoo/article/details/44626011 2017-02-04 22:52:54 目录: 本文的目的是,完成一个从sd卡启动的一个纯净版的linux系统移植,其实就是一个很裸的根文件系统,后期有空会试着把

Eclipse中查看Android模拟器SD卡目录

有时候用到Android模拟器来模拟SD卡相关操作,在Eclipse中可以直接查看SD卡目录: 首先,新建模拟器的时候要创建SD卡,存储的大小根据需要创建: 启动模拟器,在Eclipse中打开视图窗口:Window--Show View--File Explorer: 可以看到下面有mnt目录,mnt--sdcard 就是SD卡的目录, 也就是代码中 Environment.getExternalStorageDirectory()  的目录: 这样就可以很直观的看到代码对sd卡的操作,比如新建