`
debuglog
  • 浏览: 195321 次
社区版块
存档分类
最新评论

存储容量检测 注意构建StatFs对象的参数合法性

阅读更多
Android 2.3.3
Eclipse Version: 3.7.0
LogCat

LogCat 报错信息:

02-14 10:24:27.134: ERROR/(4355): statfs nokia failed, errno: 2
02-14 10:24:27.144: WARN/System.err(4355): java.lang.IllegalArgumentException
02-14 10:24:27.153: WARN/System.err(4355): at android.os.StatFs.native_setup(Native Method)
02-14 10:24:27.173: WARN/System.err(4355): at android.os.StatFs.(StatFs.java:32)
02-14 10:24:27.173: WARN/System.err(4355): at com.tmall.util.Devices.getBlock(Devices.java:161)
02-14 10:24:27.184: WARN/System.err(4355): at com.tmall.util.Devices.getUsedRatio(Devices.java:199)
02-14 10:24:27.184: WARN/System.err(4355): at com.tmall.nokia.Check.checkSDBlock(Check.java:271)
02-14 10:24:27.184: WARN/System.err(4355): at com.tmall.nokia.Check.run(Check.java:332)
02-14 10:24:27.195: WARN/System.err(4355): at java.lang.Thread.run(Thread.java:1019)

发生错误原因分析:
分析发生错误部分代码,发现在构建StatFs对象时出错

 

	nokiaPath = "nokia"
	StatFs sf = new StatFs(nokiaPath);

 StatFs用于对系统的存储容量进行检测。报错是因为构建StatFs对象时使用了非法参数。"nokia"不是一个合法有效的参数,合法参数应该形如"sdcard"。

 

解决办法:

使用默认的路径及名称是最好的方法

	nokiaPath = Environment.getExternalStorageDirectory().getPath();// nokiaPath ="/mnt/sdcard"
	//nokiaPath = Environment.getExternalStorageDirectory().getName();// nokiaPath ="sdcard"
	StatFs sf = new StatFs(nokiaPath);

  
如果一定需要自定义路径作为参数,也应使用类似下列格式的有效自定义路径

	nokiaPath = "/mnt/sdcard/nokia/";
	nokiaPath = "/sdcard/nokia/";
	nokiaPath = "sdcard/nokia/";

  

以合法的路径及名称作为参数,一般类似以"/mnt/sdcard" 或"sdcard/"开头的路径都是正确的。针对不同硬件,可能需要在编程中通过测试,使用有效格式。

 

1
1
分享到:
评论

相关推荐

    android 查询存储卡剩余容量 (Environment 加 StatFs)

    在Android系统中,开发者可以通过Java API来获取存储卡(外部存储)的剩余容量信息。这里主要涉及两个关键类:`Environment`和`StatFs`。`Environment`是Android提供的一个系统类,它提供了与文件系统相关的常量和...

    android平台存储容量大小更改

    在Android平台上,存储容量的管理是一项关键任务,尤其是在设备内存有限的情况下。本示例主要关注如何在H6平台上实现Flash存储容量的翻倍,而这一技术同样适用于其他平台,尽管可能需要进行相应的验证。让我们深入...

    android 信号强度检测和SD卡存储空间检测code

    在Android开发中,检测设备的信号强度以及SD卡的存储空间是两个常见的需求。这篇文章将详细阐述如何实现这两个功能,并提供相关的代码示例。 一、Android信号强度检测 在Android系统中,我们可以使用...

    linux下df命令statfs函数实现

    利用statfs函数,实现了C代码查询磁盘空间大小,基本上等同于df命令。测试可用。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...

    Android检测手机中存储卡及剩余空间大小的方法(基于Environment,StatFs及DecimalFormat)

    在Android开发中,有时我们需要获取设备的存储信息,例如检测手机中存储卡的状态以及剩余空间大小。本篇文章将详细介绍如何使用`Environment`、`StatFs`和`DecimalFormat`这三个类来实现这一功能。 首先,`...

    获取手机存储空间

    获取手机存储空间值 private String getInternalMemoryPath() { return Environment.getDataDirectory().getPath(); } /** * * @return 内置sd卡路径 */ private String getExternalMemoryPath() { ...

    获取sdcard容量

    在Android系统中,SD卡(Secure Digital Card)通常被用作外部存储,用于扩展设备的存储空间,存储用户数据、应用程序、媒体文件等。当进行文件操作,特别是大文件的写入时,了解SD卡的剩余容量至关重要,以防在写入...

    获取手机剩余内部存储大小

    - 外部存储(External Storage):如果需要获取外部存储(如SD卡)的剩余空间,可以使用`Environment.getExternalStorageDirectory().getPath()`获取路径,然后同样创建`StatFs`对象进行计算。 - 注意权限:从...

    查看SD和手机容量

    以下是一个简单的示例代码,展示如何使用`StatFs`来查看SD卡(外部存储)的容量: ```java // 获取SD卡路径 String sdCardPath = Environment.getExternalStorageDirectory().getPath(); // 创建StatFs对象 StatFs...

    判断双SD卡_CheckDoubleSDCard.zip

    每个存储卷都会返回一个`StatFs`对象,它包含了关于文件系统的统计信息,如总块数、可用块数等。我们可以通过`StatFs`的`blockCount`属性来判断是否为两个不同的存储卡。如果`blockCount`显著不同,那么可能就存在两...

    QT 获取 进程名、PID、CPU时间、内存、用户对象、GDI对象,获取盘符的容量和监控硬盘的插拔

    在Linux中,可以使用`du`命令或者`statfs`系统调用来获取磁盘信息。 6. **监控硬盘插拔**: QT提供QFileSystemWatcher类,可以监听文件或目录的变化,包括文件系统挂载和卸载事件。通过创建一个QFileSystemWatcher...

    Android 获取SDCard卡容量.rar

    Android获取手机内置存储SDCard的使用情况,包括SD卡容量、已使用大小,剩余容量大小等信息,将获取的过程写入按钮事件中,单击按钮后,获取SD卡容量信息。  if(Environment.getExternalStorageState().equals...

    数据存储第1部分

    3. **获取SD卡剩余容量**:在Android中,可以使用StatFs类来查询外部存储(通常为SD卡)的可用空间。这在需要确保有足够的空间进行大文件写入时非常有用。通过获取StatFs对象并调用其方法,可以获取到总块数、自由...

    获取 Android 设备的系统信息 包含屏幕信息、内存信息、IMEI、存储、传感器、CPU等信息.zip

    在Android平台上,获取设备的系统信息是开发过程中常见的需求,这包括屏幕参数、内存状态、IMEI号码、存储空间、传感器信息以及CPU详情等。以下将详细解释如何获取这些信息。 1. **屏幕信息**: - 屏幕尺寸:通过`...

    Android开发之系统信息【1】——获取Android手机中SD卡存储信息

    综上所述,获取Android手机SD卡存储信息的过程主要包括申请权限、判断SD卡状态、获取`StatFs`对象以及计算存储空间。开发者可以根据需求调整代码,比如添加错误处理机制,或者适配不同Android版本的差异。了解这些...

    计算机软件-商业源码-检测磁盘容量_硬件与系统.zip

    "检测磁盘容量_硬件与系统"这个项目,从标题和描述中我们可以推测,它是一个用于检查计算机硬盘驱动器容量以及与操作系统相关硬件信息的程序。下面我们将深入探讨这一主题,详细介绍相关的知识点。 首先,我们来...

    安卓Android源码——判断双SD卡_CheckDoubleSDCard.rar

    创建`StatFs`对象并传入路径(如SD卡的路径),然后调用其`blockCount()`和`blockSize()`方法获取存储设备的总块数和单个块的大小,从而计算可用存储空间。 3. 双SD卡判断: 当设备有多个外部存储设备时,可以使用...

    AndroidSdcard空间计算

    在Android系统中,SD卡(Secure Digital Card)通常被用作外部存储,用于扩展设备的存储容量。在开发Android应用时,了解如何计算SD卡的可用空间和总空间是至关重要的,这有助于确保应用程序能够正确地管理文件存储...

    安卓SD卡文件管理更新信息相关-android读取外置和内置存储卡路径和大小.rar

    创建`StatFs`对象,传入存储路径,然后调用`getTotalBytes()`或`getTotalBlocks()`方法,乘以单个块的大小(通过`getBlockSize()`获得)。 - 计算可用空间,使用`getAvailableBytes()`或`getAvailableBlocks()`,...

Global site tag (gtag.js) - Google Analytics