为了账号安全,请及时绑定邮箱和手机立即绑定

如何使 WPF 应用程序不覆盖它创建的文件

如何使 WPF 应用程序不覆盖它创建的文件

C#
婷婷同学_ 2022-12-31 10:50:16
下面的程序通过按 P 键创建自身的快照。它在程序所在的目录中创建文件。例如,第一次按 P 键时,它会创建文件 snapshot.png,如果再次按它,则会创建 snapshot_1,第三次会创建 snapshot_2,依此类推...但是如果你关闭程序并再次启动它并且那些文件现在存在于目录中,如果现在你按 P 键它会覆盖它们......我想要的是程序检查它要创建的文件是否存在,如果存在,则尝试创建一个具有行中下一个数字的文件..如果也存在,则尝试下一个,依此类推on,直到找到一个不存在的文件名,然后才创建文件。你能帮我修改代码来做我正在描述的吗?     string filename = "\\screenshot.png";    private void Mainwindow_KeyDown(object sender, KeyEventArgs e)    {                             if (e.Key == Key.P)        {            FrameworkElement element = UxVisual as FrameworkElement;            var pathstr = System.IO.Path.GetDirectoryName(System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName);            filename = "\\screenshot_" + DateTime.Now.ToFileTime() + ".png";            Uri path = new Uri(pathstr + filename);            CaptureScreen(element, path);        }
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

我不知道为什么这个问题在上面的评论部分变得如此冒犯......但是正如其他用户已经建议的那样,你应该考虑在你的文件路径中添加一个时间戳。您可以使用这样DateTime的字符串操作来执行此操作:

filename = "\\screenshot_" + DateTime.Now.ToFileTime() + ".png";

可能的输出将是一个名为此文件的文件screenshot132006693766467910.png,这将导致所有文件名彼此不同并且不会相互覆盖

根据要求,您可以使用以下方法使它看起来更好:

var filename = "\\screenshot_" + DateTime.Now.ToString("HH_mm_ss_fff") + ".png";

输出就像screenshot_16_14_11_523.png包含时分秒和毫秒


查看完整回答
反对 回复 2022-12-31
  • 1 回答
  • 0 关注
  • 96 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信