2010-12-27 4 views
2

ファイルをダウンロードしてSDCardに保存していて、SDCardがいっぱいになったときにイベントをキャプチャします。現在、SDCardにメモリが残っていない場合、IOExceptionをスローします。SDCardがいっぱいになるとIOExceptionがスローされます

メモリフル例外とそれ以外のIOExceptionを区別するにはどうすればよいですか?

乾杯、 Prateek

答えて

0

であると仮定できる場合書き込みしようとする前に十分な領域があるかどうかをチェックしてIOExceptionを回避することができます。

+1

はい、私は書きたいデータの量を知っています。しかし、他のソースが同時にSDカードに書き込んでいる場合はどうなりますか?画像が同時にSDカード上でクリック&書かれているとします。 –

+0

@Prateek OK、IOExceptionをキャッチした後にチェックを行うこともできます。しかし、データの同時書き込み/削除がある場合、決して100%確実ではありません。 –

+0

ありがとう.. SDCardのような状況を識別するために完全な場合、「デバイスに残っているスペースはありません」というIOExceptionのdetailMessageを比較すればOKでしょうか?これが良い習慣であるかどうかはわかりません。 –

1

その後、通常のメッセージによってNoMemoryLeftExeptionのようなものが存在しない場合。


あなたは、SDカードに残されたのIOExceptionスペースの後に確認することができます...いくつかの小さな量、より多くが、その後再スロー他に、その例外はあなたがどのくらいのデータを知っていれば、これはMemoryFullException

+2

VMにメモリ不足が発生した場合、OutOfMemoryエラーがスローされます。永続ストレージとは何の関係もありません。 –

+0

@ダン「プラットフォームリソース」が私にとって誤解を招いていたこと。それを指摘してくれてありがとう。 –

+0

ありがとうございました!しかし、このようなシナリオを特定するにはどうしてもありますか? –

-1

のIOExceptionメッセージ(e.getMessageは())あなたは、SDカードがいっぱいになって、100%を確認することができ、次のテキスト

ENOSPC(デバイス上で左スペースがありません)

が含まれている場合。