在2017年8月9日(Android 7.1.2)上使用最新Lineage OS的三星Galaxy S5:
我使用FileOutputStream写入SDCard上的app cache dir上的文件并关闭它。 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();
稍后,当我列出目录时,File.length()为0(零)而不是几MB。但是,我可以读取文件中的所有字节。但是尺寸仍显示为零。
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上。
在阅读或写作时没有看到任何错误,异常等。