ファイルを保存する必要があるアプリがあります。書き込む前に、デバイス上の使用可能なスペースをチェックします。ここでは、私はスペースをチェックするために使用しているコード、ログステートメントです。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()を呼び出しても、バグが残っています。私はテスターにデバイスを再起動させ、ちょうど奇妙な状態になったかもしれないと考えました。
これはなぜ起こっているのでしょうか?