【发布时间】:2020-08-22 05:09:37
【问题描述】:
这是我在许多应用程序中遇到的问题。 我想更改文件中的信息,该文件具有过时的版本。 在这种情况下,我在将歌曲添加到播放列表后更新记录播放列表的文件。 (作为参考,我正在为 android 创建一个应用程序。)
问题是如果我运行这段代码:
FileOutputStream output = new FileOutputStream(file);
output.write(data.getBytes());
output.close();
如果在尝试写入文件时发生 IOException,则数据会丢失(因为创建 FileOutputStream 的实例会清空文件)。有没有更好的方法来做到这一点,所以如果发生 IOException,旧数据保持不变?还是只有当文件是只读的时候才会出现这个错误,所以我只需要检查一下?
我唯一的“解决方法”是通知用户错误,并为用户提供正确的数据,用户必须手动更新这些数据。虽然这可能对开发人员有用,但如果发生这种情况,可能会出现很多问题。此外,在这种情况下,用户没有自己编辑文件的权限,因此“变通”根本不起作用。
抱歉,如果有人问了这个问题。搜索时找不到结果。
提前致谢!
【问题讨论】:
-
在删除旧文件并重命名新文件之前,您是否尝试过创建一个新文件来保存新信息?
-
@EvanBailey 听起来它可以工作......一个问题,重命名会失败吗?如果没有,如果您发布它,我很乐意接受这个答案!
-
这些文件是否需要由任何其他应用程序或用户直接使用? (即,除了您自己的代码之外,确切的文件名对其他任何东西都很重要吗?)
-
@EvanBailey 不,该文件只能从应用程序访问(由于 android 对所有文件的严格保密)
标签: java android file fileoutputstream