4

在 2017 年 8 月 9 日夜间使用最新 Lineage OS 的三星 Galaxy S5 (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();

后来,当我列出目录时,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 上。

在读取或写入时没有看到任何错误、异常等。

4

0 回答 0