C# 应用程序崩溃时的文件恢复#
我正在创建一个WPF/C应用程序,在关闭之前删除文件并创建新文件(从在线数据)。当应用程序在新文件创建过程完成甚至开始之前随机崩溃时,就会出现问题 是否有一种文件恢复方法(在应用程序内完成,而不仅仅是取消删除应用程序等)可以在我的代码中使用,以便当应用程序崩溃时,删除的文件不会丢失 更准确地说,我在应用程序开始时删除了4个文件,并在应用程序结束时创建了新文件。但是如果应用程序在中间崩溃,文件就会丢失。 我如何防止这个问题C# 应用程序崩溃时的文件恢复#,c#,wpf,data-recovery,crash,C#,Wpf,Data Recovery,Crash,我正在创建一个WPF/C应用程序,在关闭之前删除文件并创建新文件(从在线数据)。当应用程序在新文件创建过程完成甚至开始之前随机崩溃时,就会出现问题 是否有一种文件恢复方法(在应用程序内完成,而不仅仅是取消删除应用程序等)可以在我的代码中使用,以便当应用程序崩溃时,删除的文件不会丢失 更准确地说,我在应用程序开始时删除了4个文件,并在应用程序结束时创建了新文件。但是如果应用程序在中间崩溃,文件就会丢失。 我如何防止这个问题 我试图降低随机碰撞的概率,但偶尔还是会发生 在创建新文件之前不要删除旧文件
我试图降低随机碰撞的概率,但偶尔还是会发生 在创建新文件之前不要删除旧文件?改名它们。当你启动应用程序时,你会知道它是否崩溃,因为旧的(重命名的)文件仍然存在,你可以执行任何整理操作。在创建新文件之前不要删除旧文件?改名它们。启动应用程序时,您将知道它是否崩溃,因为旧的(重命名的)文件仍将存在,然后您可以执行任何整理操作。考虑将文件移动到某个临时文件夹,而不是删除它们。您可以发明一些取消删除技术,但是这并不可靠,因为文件系统可以随时重写未占用的空间。新文件到达后,您将删除以前移动的文件。考虑将文件移动到某个临时文件夹,而不是删除它们。您可以发明一些取消删除技术,但是这并不可靠,因为文件系统可以随时重写未占用的空间。新文件到达后,您将删除以前移动的文件。如果您担心文件丢失,您可以:
- 在删除
A.txt之前(比如说)在启动时创建它的副本
,并在删除之后创建它的副本李>A.tmp
- 关闭时,创建新文件并删除目录中的所有
文件tmp
- 关闭时,创建新文件并删除目录中的所有
这样,如果在程序运行期间出现问题,当程序再次启动时,它将找到上次创建的
tmp
,因此可以从中重建信息(如果需要)并继续程序循环。如果您对文件丢失持谨慎态度,您可以:
- 在删除
A.txt之前(比如说)在启动时创建它的副本
,并在删除之后创建它的副本李>A.tmp
- 关闭时,创建新文件并删除目录中的所有
文件tmp
- 关闭时,创建新文件并删除目录中的所有
这样,如果在程序运行期间出现问题,当程序再次启动时,它将找到上次创建的
tmp
,因此可以从中重建信息(如果需要)并继续程序循环。启动时,对文件不做任何操作
关闭时,遵循以下步骤:
OLDNAME.tmp
或其他的新文件。如果它已经存在,请放弃并重新创建它movefiletransact()
()将新文件重命名为旧文件moveFileTransact()
,事情会变得更加复杂:
注意:如果您发现自己在一个兼容POSIX的文件系统上,标准的重命名操作保证是原子的,这使得步骤2变得很简单。启动时,对文件不做任何操作 关闭时,遵循以下步骤:
OLDNAME.tmp
或其他的新文件。如果它已经存在,请放弃并重新创建它movefiletransact()
()将新文件重命名为旧文件moveFileTransact()
,事情会变得更加复杂:
注意:如果您发现自己使用的是符合POSIX标准的文件系统,那么标准的重命名操作将保证是原子的,这使得步骤2变得很简单。解决方案是只在新文件完成后删除这些文件。我必须先删除这些文件,然后在下载时查找同名的新文件(这就是它们必须是的方式,这是类项目)因此在创建新文件之前必须重命名/删除它们。解决方案是仅在新文件完成后删除这些文件。我必须先删除这些文件,然后在下载时查找同名的新文件(这就是它们必须是的方式,这是类项目)因此,在创建新文件之前,必须重命名/删除这些文件