首页 > 解决方案 > 在 Android 中,当应用程序在写入期间在其他地方崩溃时,文件会发生什么?

问题描述

假设我有一个后台任务,每 5 秒通过 FileOutputStream 向文件写入一个随机字母。1 分钟后,流将关闭,任务将停止。假设应用程序在 UI 线程上崩溃了 30 秒,可能来自 NPE,我们永远无法关闭流。

文件是否保存了我们已经写入的内容?还是我们失去了一切?

标签: androidfilecrashoutputstream

解决方案


这实际上取决于您使用的OutputStream的实现,因为它是一个抽象类。实际与文件系统交互并向文件写入内容的方法是flush()。

例如,PrintStream能够在每次写入时自动刷新。

编辑: FileOutputStream 没有包含在任何缓冲功能中,因此它应该立即将每个字母写入您的文件;崩溃后,该文件将与您的字母一起保留。


推荐阅读