簡體   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