我的应用如何查找辅助文本文件的旧版本

本文关键字:文本 文件 版本 应用 何查找 查找 我的 | 更新日期: 2023-09-27 18:36:16

我有从文本文件中读取加密凭据的代码。我更新了该文本文件以包含连接字符串。其他所有内容都可以正常读取和解密,但连接字符串则不然(当然,我也相应地更新了我的代码)。

所以我想知道:它是否读取了正确的文件。答案是:不!''bin''debug 中的文件的日期为 2012 年 6 月 5 日上午 9:41,但以下代码:

using (StreamReader reader = File.OpenText("Credentials.txt")) {
    string line = null;
    MessageBox.Show(File.GetCreationTime("Credentials.txt").ToString());

。显示 6/4/2012 14:00:44

因此,我在硬盘驱动器中搜索了"凭据.txt"的所有实例,以查看它从哪里读取文件。它只找到了一个实例,即 ''bin''debug 中具有今天日期的实例。

???

注意:凭据.txt不是我的解决方案的一部分;应该是吗?(IOW,我只是将其复制到''bin''debug中,我没有执行"添加|现有项目")

我的应用如何查找辅助文本文件的旧版本

如果您不更改当前目录,则 bin''Debug 中的文件将是正在读取的文件,因为您没有指定完整路径。

问题可能是由于不同文件日期之间的差异。 创建日期(即您获取并显示为 6/4 @ 2:00:44pm)可能与修改日期(Windows 资源管理器中默认显示的日期)不同。 可以使用File.GetLastWriteTime而不是GetCreationTime获取此日期。

话虽如此,我建议使用文件的完整路径,而不是假设当前目录与可执行路径相同。 指定完整路径(可以根据可执行路径确定)将更安全,并且以后不太可能导致问题。 这可以通过以下方式完成:

var exePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
var file = System.IO.Path.Combine(exePath, "Credentials.txt");
using (StreamReader reader = File.OpenText(file)) { // ...