android - 在 Android 中,当应用程序在写入期间在其他地方崩溃时,文件会发生什么?
问题描述
假设我有一个后台任务,每 5 秒通过 FileOutputStream 向文件写入一个随机字母。1 分钟后,流将关闭,任务将停止。假设应用程序在 UI 线程上崩溃了 30 秒,可能来自 NPE,我们永远无法关闭流。
文件是否保存了我们已经写入的内容?还是我们失去了一切?
解决方案
这实际上取决于您使用的OutputStream的实现,因为它是一个抽象类。实际与文件系统交互并向文件写入内容的方法是flush()。
例如,PrintStream能够在每次写入时自动刷新。
编辑: FileOutputStream 没有包含在任何缓冲功能中,因此它应该立即将每个字母写入您的文件;崩溃后,该文件将与您的字母一起保留。
推荐阅读
- javascript - 如何防止 React 重新渲染整个组件?
- javascript - 如何在if语句js中获取数组中的每个元素
- c++ - 出错:目标“全递归”的配方失败
- google-apps-script - 使用 Google 脚本向 Gmail 正文添加水平线
- java - 如何确定 JavaFX XYChart 绘图区域的边界
- python-3.x - 检查目标字符串是否包含列表中的任何项目并获取索引的方法?| Python3
- sql-server - 如何在 SQL Server 中使用子查询而不是视图
- sass - 选择器的自动修复顺序
- scala - 使用 IntelliJ CE 调试 Spark 时无法命中断点
- typescript - 如何在不使用强制转换或为每个字段创建变量的情况下构建对象?