`
webdev2014
  • 浏览: 675704 次
文章分类
社区版块
存档分类
最新评论

Android获取内部和SDCard的存储空间

 
阅读更多


有时我们开Android项目开发时会用到文件存储或上传文件的一些操作,那么我们前提是要获取到该存储设备的大小,以方便于与我们需要操作的文件的大小做比较,如果操作的文件大小小于存储空间,那么就可以继续操作,反之则不能进行操作

该方法获取存储设备的总大小

/**
	 * 获取存储设备总存储空间
	 * 
	 * @param path 存储设备目录对象
	 */
	private String getTotalSize(File path) {
		// 创建StatFs对象
		StatFs stat = new StatFs(path.getPath());
		// 获取每个存储快的大小
		long blockSize = stat.getBlockSize();
		// 获取所有的存储块
		long blockCount = stat.getBlockCount();
		// 获取内部存储的总大小
		long totalSize = blockCount * blockSize;
		// 将long类型转为字符串
		String totalStr = Formatter.formatFileSize(this, totalSize);
		return totalStr;
	}

获取存储设备的可用大小

/**
	 * 获取可用存储空间
	 * @param path 存储设备目录对象
	 * @return
	 */
	private String getAvailSize(File path) {
		// 创建StatFs对象
		StatFs stat = new StatFs(path.getPath());
		// 获取每个存储快的大小
		long blockSize = stat.getBlockSize();
		// 获取可用的存储块
		long availableBlocks = stat.getAvailableBlocks();
		// 获取内部存储的可用大小
		long availSize = availableBlocks * blockSize;
		// 将long类型转为字符串
		String availStr = Formatter.formatFileSize(this, availSize);
		return availStr;
	}

在主方法调用

private TextView tvSdCard, tvPhoneSpace;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		// 取消标题
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		// 获取TextView对象
		tvSdCard = (TextView) findViewById(R.id.tv_sd_card_info);
		tvPhoneSpace = (TextView) findViewById(R.id.tv_data_size);
		// 获取外部存储目录对象
		File externalStorage = Environment.getExternalStorageDirectory();
		// 获取内部存储目录对象
		File internalStorage = Environment.getDataDirectory();
		//获取外部存储设备总空间
		String externalTotalSize=getTotalSize(externalStorage);
		//获取外部存储设备可以空间
		String externalAvailSize=getAvailSize(externalStorage);
		//设置TextView信息
		tvSdCard.setText("外部存储设备总空间:"+externalTotalSize+"\n可用空间:"+externalAvailSize);
		//获取内部存储设备总空间
		String internalTotalSize=getTotalSize(internalStorage);
		//获取内部存储设备可用空间
		String internalAvailSize=getAvailSize(internalStorage);
		//设置TextView信息
		tvPhoneSpace.setText("内部存储设备总空间:"+internalTotalSize+"\n可用空间:"+internalAvailSize);
	}
这样就可以获取到存储设备的总大小与可用大小了


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics