Android中使用正確參數構建StatFs對象

Android 2.3.3           
Eclipse Version: 3.7.0           
LogCat   

LogCat 報錯信息:

02-14 11:54:12.834: ERROR/(2525): statfs htc failed, errno: 2
02-14 11:54:12.844: WARN/System.err(2525): java.lang.IllegalArgumentException
02-14 11:54:12.853: WARN/System.err(2525): at android.os.StatFs.native_setup(Native Method)
02-14 11:54:12.873: WARN/System.err(2525): at android.os.StatFs.(StatFs.java:32)
02-14 11:54:12.873: WARN/System.err(2525): at com.taobao.util.Devices.getBlock(Devices.java:161)
02-14 11:54:12.884: WARN/System.err(2525): at com.taobao.util.Devices.getUsedRatio(Devices.java:199)
02-14 11:54:12.884: WARN/System.err(2525): at com.taobao.htc.Check.checkSDBlock(Check.java:271)
02-14 11:54:12.884: WARN/System.err(2525): at com.taobao.htc.Check.run(Check.java:332)
02-14 11:54:12.895: WARN/System.err(2525): at java.lang.Thread.run(Thread.java:1019)

發生錯誤原因分析:
分析發生錯誤部分代碼,發現在構建StatFs對象時出錯

			sdpath = "htc/";
			StatFs sf = new StatFs(sdpath);

StatFs用於對系統的存儲容量進行檢測。報錯是因爲構建StatFs對象時使用了非法參數。"htc/"不是一個合法有效的參數,合法參數應該形如“"/mnt/sdcard”。

 

解決辦法:

使用默認的路徑及名稱是最好的方法

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

如果一定需要自定義路徑作爲參數,也應使用類似下列格式的有效自定義路徑

			sdpath = "/mnt/sdcard/htc/";
			sdpath = "/sdcard/htc/";
			sdpath = "sdcard/htc/";


以合法的路徑及名稱作爲參數,一般類似以"/mnt/sdcard" 或"sdcard/"開頭的路徑都是正確的。具體情況需要在編程中測試一下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章