android 读取SD卡文件
SD卡作为手机的扩展存储设备,在手机中充当硬盘角色,可以让我们手机存放更多的数据以及多媒体等大体积文件。因此查看SD卡的内存就跟我们查看硬盘的剩余空间一样,是我们经常操作的一件事,那么在Android开发中,我们如何能获取SD卡的内存容量呢?
首先,要获取SD卡上面的信息,必须先对SD卡有访问的权限,因此第一件事就是需要添加访问扩展设备的权限。
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
其次,需要判断手机上面SD卡是否插好,如果有SD卡的情况下,我们才可以访问得到并获取到它的相关信息,当然以下这个语句需要用if做判断。
- Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)
取得sdcard文件路径
- File path = Environment.getExternalStorageDirectory();
- StatFs statfs = new StatFs(path.getPath());
获取block的SIZE
- long blocSize = statfs.getBlockSize();
获取BLOCK数量
- long totalBlocks = statfs.getBlockCount();
空闲的Block的数量
- long availaBlock = statfs.getAvailableBlocks();
计算总空间大小和空闲的空间大小
储空间大小跟空闲的存储空间大小就被计算出来了。
- /**
- * 取得空闲sd卡空间大小
- * @return
- */
- public long getAvailaleSize(){
- File path = Environment.getExternalStorageDirectory(); //取得sdcard文件路径
- StatFs stat = new StatFs(path.getPath());
- /*获取block的SIZE*/
- long blockSize = stat.getBlockSize();
- /*空闲的Block的数量*/
- long availableBlocks = stat.getAvailableBlocks();
- /* 返回bit大小值*/
- return availableBlocks * blockSize;
- //(availableBlocks * blockSize)/1024 KIB 单位
- //(availableBlocks * blockSize)/1024 /1024 MIB单位
- }
- /**
- * SD卡大小
- * @return
- */
- public long getAllSize(){
- File path = Environment.getExternalStorageDirectory();
- StatFs stat = new StatFs(path.getPath());
- /*获取block的SIZE*/
- long blockSize = stat.getBlockSize();
- /*块数量*/
- long availableBlocks = stat.getBlockCount();
- /* 返回bit大小值*/
- return availableBlocks * blockSize;
- }
Android 文件的浏览(类似于FileDialog的功能)
首先说一下这个文件浏览的简单实现原理:
首先选择一个目录做为根目录,然后打开此目录,常用的就是使用File这个类了,如下:
- File file=new File(path);
然后可以通过获取到此目录下所有文件及文件夹的列表:
如下:
- File[] files = file.listFiles();
然后再根据根据得到的文件,来判断是文件夹还是文件,如果是文件夹,那么我们就将文件夹添加到列表中,如果是文件那么就把文件添加到列表中进行显示,如果需要显示图标的话,那么就需要根据文件的后缀,设置不同的图标了。我是在ListView中进行显示的。
基本代码如下:
- for (File currentFile : files)
- {
- //判断是一个文件夹还是一个文件
- if (currentFile.isDirectory())
- {
- currentIcon = getResources().getDrawable(R.drawable.folder);
- }
- else
- {
- //取得文件名
- String fileName = currentFile.getName();
- //根据文件名来判断文件类型,设置不同的图标
- if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingImage)))
- {
- currentIcon = getResources().getDrawable(R.drawable.image);
- }
- else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingWebText)))
- {
- currentIcon = getResources().getDrawable(R.drawable.webtext);
- }
- else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingPackage)))
- {
- currentIcon = getResources().getDrawable(R.drawable.packed);
- }
- else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingAudio)))
- {
- currentIcon = getResources().getDrawable(R.drawable.audio);
- }
- else if (checkEndsWithInStringArray(fileName, getResources().getStringArray(R.array.fileEndingVideo)))
- {
- currentIcon = getResources().getDrawable(R.drawable.video);
- }
- else
- {
- currentIcon = getResources().getDrawable(R.drawable.text);
- }
- }
下面是根据后缀对文件的类型进行的判断:
- //通过文件名判断是什么类型的文件
- private boolean checkEndsWithInStringArray(String checkItsEnd,
- String[] fileEndings)
- {
- for(String aEnd : fileEndings)
- {
- if(checkItsEnd.endsWith(aEnd))
- return true;
- }
- return false;
- }
再贴一段自己的代码,获取SD卡文件名
- private void initData() {
- // 判断是否有外存储设备
- if (Environment.getExternalStorageState().equals(
- Environment.MEDIA_MOUNTED)) {
- File path = Environment.getExternalStorageDirectory();
- File file = new File(path.getPath());
- File[] files = file.listFiles();
- getFileName(files);
- }
- }
- private void getFileName(File[] files) {
- for (File currentFile : files) {
- // 判断是一个文件夹还是一个文件
- if (currentFile.isDirectory()) {
- getFileName(currentFile.listFiles());
- } else {
- // 取得文件名
- String fileName = currentFile.getName();
- // 获取.info后缀的文件
- if (fileName.endsWith(".info"))
- // 保存去掉后缀的文件名
- names.add(fileName.substring(, fileName.lastIndexOf(".")));
- }
- }
- }
android 读取SD卡文件的更多相关文章
- android 读取sd卡中的图片
一.获取读取SD卡的权限 <!--在SDCard中创建与删除文件权限 --> <uses-permission android:name="android.perm ...
- android 读写SD卡文件
参考: http://www.oschina.net/code/snippet_176897_7336#11699 写文件: private void SavedToText(Context cont ...
- Android读取sd卡
public static String[] getStoragePaths() { List<String> pathsList = new ArrayList<String> ...
- Android 读写SD卡的文件
今天介绍一下Android 读写SD卡的文件,要读写SD卡上的文件,首先需要判断是否存在SD卡,方法: Environment.getExternalStorageState().equals(Env ...
- Android_(控件)使用ListView显示Android系统SD卡的文件列表_02
使用ListView显示Android SD卡中的文件列表 父类布局activity_main.xml,子类布局item_filelayout(一个文件的单独存放) 运行截图: 程序结构 <?x ...
- android开发SD卡工具类(一)
SD卡工具类整理: package com.gzcivil.utils; import java.io.File; import java.io.FileInputStream; import jav ...
- Android 常见SD卡操作
目录 Android 常见SD卡操作 Android 常见SD卡操作 参考 https://blog.csdn.net/mad1989/article/details/37568667. [0.] E ...
- Android获取SD卡路径及SDCard内存的方法
这篇文章主要介绍了Android获取SD卡路径及SDCard内存的方法,较为详细的分析了Android针对SD卡操作所涉及的类及其具体函数功能,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了A ...
- android 向SD卡写入数据
原文:android 向SD卡写入数据 1.代码: /** * 向sdcard中写入文件 * @param filename 文件名 * @param content 文件内容 */ public v ...
随机推荐
- [RxJS] What RxJS operators are
We have covered the basics of what is Observable.create, and other creation functions. Now lets fina ...
- FastDFS配置说明(中英文)
FastDFS配置说明 1)tracker.conf # is this config file disabled # false for enabled # true for disabled di ...
- Java web 文件下载
/** * 下载文件 * @param msg */ public boolean printOutFile(String fileFullName,String fileName) { if (fi ...
- PowerDesigner15的安装和破解
一.PowerDesigner15的安装 运行安装包,出现如下安装界面
- mysql 安装配置详解
作为演示,是不可能完全模拟到生产环境的,因此不可能尽善尽美.由于是在virtualbox里面的centos6.5最小化安装版中安装配置mysql,因此前期的准备工作有很多,那么开始吧.添加一块硬盘,用 ...
- mysql复习笔记
阅读目录 1.什么是SQL语句2.使用sql语句创建数据库和表3.创建数据表4.数据完整性约束5.四中基本字符类型说明6.SQL基本语句7.类型转换函数8.日期函数9.数学函数10.字符串函数11.联 ...
- 用CSS+Jquery实现一个漂浮的窗体
一.项目需求: 实现一个用于网站主页面 从窗体左上角开始飘到右下角 之后又飘到右上角 十秒之后消失的效果. 二.需求分析: 首先 应当想要漂浮的内容放在一个容器内,也就是一个DIV,设计它的样式,不管 ...
- 浅谈inline-block
一.区分block,inline,inline-block 1.block block元素会独占一行,多个block元素会各自新起一行.默认情况下,block元素宽度自动填满其父元素宽度. block ...
- VS2015 Cordova Ionic移动开发(四)
一.布局 Ionic模板提供了一个侧边栏菜单示例项目和标签选项卡示例项目.本案例将两个布局进行结合,简单介绍下Ionic的布局.Ionic采用自定义标签和标准Html标签相结合.相对于全部使用div方 ...
- Gprinter Android SDK V2.0 使用说明
佳博特约经销商,此店购买的打印机问题优先解决哟 https://shop107172033.taobao.com/index.htm?spm=2013.1.w5002-9520741823.2.V1p ...