2016-12-05 9 views
1

ファイルを保存する必要があるアプリがあります。書き込む前に、デバイス上の使用可能なスペースをチェックします。ここでは、私はスペースをチェックするために使用しているコード、ログステートメントです。android file.getUsableSpaceは、他のファイルを削除した後にのみ、getExternalFilesDir(null)を返します。

String state = Environment.getExternalStorageState(); 
Log.d("Classname", "external storage state is " + state); 
File file = new File(getExternalFilesDir(null) + File.separator); 
Log.d("Classname", "file exists " + file.exists()); 
long usableSpace = file.getUsableSpace(); 
Log.d("Classname", "Space available " + usableSpace); 

私は別のファイルを保存しようとすると、約3 GBの空きがあるデバイス上で、3〜5メガバイトの周りに、他のファイルを削除した後、getUsableSpaceは0を返すことバグ報告を受けました。

最初のファイルを追加する前に、ログ:

11:21:46.879: external storage state is mounted 
11:21:46.879: file exists true 
11:21:46.880: Space available 3185496064 

しようと、最初のファイルを削除した後、ログを追加するための第二:

11:21:57.811: external storage state is mounted 
11:21:57.822: file exists false 
11:21:57.823: Space available 0 

私は、私のマニフェストに外部ストレージ権限を持っているし、ストレージがマウントされているかどうかをチェックし、外部ストレージファイルを作成するときにmkdir()を呼び出しても、バグが残っています。私はテスターに​​デバイスを再起動させ、ちょうど奇妙な状態になったかもしれないと考えました。

これはなぜ起こっているのでしょうか?

答えて

0

見つかりました。解決方法は削除されました - 削除された最後のファイルがなくなった場合、getExternalStorageDirが探していたディレクトリをクリーンアップしていました。そのためgetUsableSpaceを試みたときにディレクトリは存在しませんでした。

関連する問題