SD-карта нового записанного файла нулевого байта до перезагрузки
На Samsung Galaxy S5 с последней версией ОС Lineage, 9 августа 2017 года (Android 7.1.2):
Я использую FileOutputStream, чтобы записать файл в директорию кэша приложения на SDCard и закрыть его. SD-карта не принята.
File file = new File(fileName);
FileOutputStream fout = new FileOutputStream(file, true); // yes, append if exists
fout.write(buf, 0, len); // wrote a few MBs here
fout.close();
Позже, когда я перечислю dir, File.length () будет 0 (ноль) вместо нескольких МБ. Я могу, однако, прочитать все байты в файле. Но размер все еще показывает как ноль.
File dir = new File(dirName);
File file = dir.listFiles()[index];
long fileSize = file.length(); // fileSize is zero until I reboot
Другие приложения, такие как Total Commander, также видят нулевой размер, но также могут копировать его в ненулевой файл.
После перезагрузки телефона файл показывает правильный размер.
Фабрично установленный файловый браузер "Файлы" всегда показывает правильный размер.
Также я пробовал на эмуляторах Android версии 6.0, 7.0, 7.1, 8.0, но все работало и размер был правильным.
Также это не происходит во внутренней памяти (или эмулируемой памяти). Только происходит на SDCard.
Не видел ошибок, исключений при чтении или записи и т. Д.