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

时间:2016-02-17 02:43:11

标签: java android

以下是该方案:

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

我可以提出几种方法:

IOException的

假设在损坏的块上writeflush时会抛出IOException。由于我没有损坏的SD卡,因此尚未经过测试。所以这是一个假设。

比较尺寸

在每flush之后,我将写缓冲区的大小与实际文件进行比较。我认为尽管它不合适但更实用。

校验

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

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

更新

抱歉晦涩难懂。我从HttpEntity.getContent()读取数据写入RandomAccessFileHttpEntity.getContent()的基础协议是TCP。

2 个答案:

答案 0 :(得分:0)

您可以尝试获取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 
}

答案 1 :(得分:0)

如果您使用TCP,将会处理网络错误。 TCP协议确实向应用程序开发人员透明/中止透明。如果无法正确接收数据,您将获得IOException。如果您不使用TCP,那么您可以构建逻辑以使用校验和进行一些验证。 一旦网络层完成其错误检查,您就可以获得SD卡错误逻辑。