繁体   English   中英

如何检查Android上SD卡是否已损坏

[英]How to check wether the SD card is corrupted on Android

这是场景:

我正在将数据从网络保存到本地存储。 有时SD卡会部分损坏。

我可以提出几种方法:

IOException

假设在损坏的块上进行writeflush时将抛出IOException。 由于我的SD卡没有损坏,因此尚未进行测试。 因此,这是一种假设。

比较大小

每次flush我将写入缓冲区的大小与实际文件进行比较。 我认为它尽管实用,却更加实用。

校验和

此方法不可靠,因为有两个因素会导致文件损坏:网络或SD卡错误。 因此,我无法指出真正的原因。

任何建议将不胜感激! 提前致谢。

更新

对不起,抱歉。 我从HttpEntity.getContent()读取数据并写入RandomAccessFile HttpEntity.getContent()的基础协议是TCP。

您可以尝试获取SD卡状态

Boolean Accessable = android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

if(Accessable)
{
  // Sd card is accessable, write data
}
else
{
 // probably corrupted or removed 
}

如果使用TCP,将解决网络错误。 TCP协议确实对应用程序开发人员透明地重新传输/中止。 如果无法正确接收数据,则将获得IOException。 如果未使用TCP,则可以构建逻辑以使用校验和完成一些验证。 网络层完成错误检查后,即可使用SD卡错误逻辑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM