android.os.Environment
提供访问环境变量
Environment静态方法:
方法 :getDataDirectory()
返回 :File
解释 : 返回Data的目录
方法 :getDownloadCacheDirectory()
返回 :File
解释 : 返回下载缓冲区目录
方法 :getExternalStorageDirectory()
返回 :File
解释 : 返回扩展存储区目录(SDCard)
方法 :getExternalStoragePublicDirectory(Stringtype)
返回 :File
解释 : 返回一个高端的公用的外部存储器目录来摆放某些类型的文件(来自网上)
方法 :getRootDirectory()
返回 :File
解释 : 返回Android的根目录
方法 :getExternalStorageState()
返回 :String
解释 : 返回外部存储设备的当前状态
getExternalStorageState() 返回的状态String类型常量 :
常量 :MEDIA_BAD_REMOVAL
值 : "bad_removal"
解释 : 在没有正确卸载SDCard之前移除了
常量 : MEDIA_CHECKING
值 : "checking"
解释 : 正在磁盘检查
常量 :MEDIA_MOUNTED
值 : "mounted"
解释 : 已经挂载并且拥有可读可写权限
常量 :MEDIA_MOUNTED_READ_ONLY
值 : "mounted_ro"
解释 : 已经挂载,但只拥有可读权限
常量 : MEDIA_NOFS
值 : "nofs"
解释 : 对象空白,或者文件系统不支持
常量 :MEDIA_REMOVED
值 : "removed"
解释 : 已经移除扩展设备
常量 :MEDIA_SHARED
值 : "shared"
解释 : 如果SDCard未挂载,并通过USB大容量存储共享
常量 :MEDIA_UNMOUNTABLE
值 : "unmountable"
解释 : 不可以挂载任何扩展设备
常量 :MEDIA_UNMOUNTED
值 : "unmounted"
解释 : 已经卸载
使用时只需先判断SDCard当前的状态然后取得SdCard的目录即可(见源代码)
---------------------------------------------------------------------------------------------------------
-
-
ublicvoidSDCardTest(){
-
-
StringsDStateString=android.os.Environment.getExternalStorageState();
-
-
-
if(sDStateString.equals(android.os.Environment.MEDIA_MOUNTED)){
-
-
try{
-
-
-
FileSDFile=android.os.Environment
-
.getExternalStorageDirectory();
-
-
-
FilemyFile=newFile(SDFile.getAbsolutePath()
-
+File.separator+"MyFile.txt");
-
-
-
if(!myFile.exists()){
-
myFile.createNewFile();
-
}
-
-
-
StringszOutText="Hello,World!";
-
FileOutputStreamoutputStream=newFileOutputStream(myFile);
-
outputStream.write(szOutText.getBytes());
-
outputStream.close();
-
-
}catch(Exceptione){
-
-
}
-
-
}
-
-
elseif(sDStateString
-
.endsWith(android.os.Environment.MEDIA_MOUNTED_READ_ONLY)){
-
-
-
FileSDFile=android.os.Environment.getExternalStorageDirectory();
-
-
-
FilemyFile=newFile(SDFile.getAbsolutePath()+File.separator
-
+"MyFile.txt");
-
-
-
if(myFile.exists()){
-
try{
-
-
-
FileInputStreaminputStream=newFileInputStream(myFile);
-
byte[]buffer=newbyte[1024];
-
inputStream.read(buffer);
-
inputStream.close();
-
-
}catch(Exceptione){
-
-
}
-
}
-
}
-
计算SDCard的容量大小
android.os.StatFs
一个模拟linux的df命令的一个类,获得SD卡和手机内存的使用情况
构造方法:
StatFs(Stringpath)
公用方法:
方法 :getAvailableBlocks()
返回 : int
解释 :返回文件系统上剩下的可供程序使用的块
方法 :getBlockCount()
返回 : int
解释 : 返回文件系统上总共的块
方法 :getBlockSize()
返回 : int
解释 : 返回文件系统 一个块的大小单位byte
方法 :getFreeBlocks()
返回 : int
解释 : 返回文件系统上剩余的所有块 包括预留的一般程序无法访问的
方法 :restat(Stringpath)
返回 : void
解释 : 执行一个由该对象所引用的文件系统雷斯塔特.(Google翻译)
想计算SDCard大小和使用情况时, 只需要得到SD卡总共拥有的Block数或是剩余没用的Block数,再乘以每个Block的大小就是相应的容量大小了单位byte.(见代码)
-
publicvoidSDCardSizeTest(){
-
-
-
StringsDcString=android.os.Environment.getExternalStorageState();
-
-
if(sDcString.equals(android.os.Environment.MEDIA_MOUNTED)){
-
-
-
FilepathFile=android.os.Environment
-
.getExternalStorageDirectory();
-
-
android.os.StatFsstatfs=newandroid.os.StatFs(pathFile.getPath());
-
-
-
longnTotalBlocks=statfs.getBlockCount();
-
-
-
longnBlocSize=statfs.getBlockSize();
-
-
-
longnAvailaBlock=statfs.getAvailableBlocks();
-
-
-
longnFreeBlock=statfs.getFreeBlocks();
-
-
-
longnSDTotalSize=nTotalBlocks*nBlocSize/1024/1024;
-
-
-
longnSDFreeSize=nAvailaBlock*nBlocSize/1024/1024;
-
}
-
转载自:http://crackren.javaeye.com/blog/747121
分享到:
相关推荐
Android_SDCard操作(文件读写,容量计算)Android_SDCard操作(文件读写,容量计算)
Android_SDCard操作(文件读写,容量计算).
Android应用源码SdCard读写文件实例
Android应用源码SdCard读写文件实例.zip
具体介绍了android中sdcard的读写操作步骤和具体的实现过程,介绍了sdcard的应用等
android开发实例-sdcard文件读写 WIFI检测、下载文件等 开发环境:JAVA SDK1.7及android最新的开发包
Android应用源码SdCard读写文件实例源码.可供学习设计参考。
安卓Android源码——SdCard读写文件实例.zip
android应用开发中关于SDCard读写操作的实例代码,在下载学习SDCard操作中,碰到很棘手的问题了。不过最后还在我的坚持下成功了,
www.mars-droid.com/Android开发视频教程 代码 源码 mars老师讲课 android 视频源码 文件读写至SDCard download(在此特别感谢mars的无私奉献,此代码为跟随视频边学边做的)
android 写入SDcard 文件,通俗易懂,适合初学者
Android_SDCard操作(文件读写,容量计算)文件读写,容量计算
android 文件操作 输入流对象 输出流对象 SDCard读写
sdcard文件读写案例-ES文件浏览器 代码详细 很全
android SD卡读写东西Txt文件
Android模拟器sdcard操作 ,帮助我们更好学Android系统开发
NULL 博文链接:https://z251257144.iteye.com/blog/1355245