有没有一种方法可以动态定位我当前的 c# Winforms 应用程序的 sub-folder/sub-file 路径的变化?

Is there a way of dynamically locating a change of path of a sub-folder/sub-file of my current c# Winforms application?

是否可以动态定位某个folder/file?

例如,假设我有一个我的应用程序显然需要能够读取的配置文件。目前,我的配置文件的路径是硬编码的。 但是,假设当我部署应用程序时,客户端决定将该配置文件移动到其他某个随机目录中。我能否做到这一点,以便我的应用程序能够找到该随机目录而无需在源代码中手动更改它?

另一个例子,我还有一个 Logs 文件夹,用于存储我需要不断写入的日志文件。与配置文件相同,如果客户端决定将 Logs 文件夹更改到其他位置,我需要能够从我的代码中动态定位它。

感谢未来的任何建议。

解决此问题的一个好方法是在代码中使用相对路径。您的应用程序需要以某种方式获取它所需的文件夹/文件的路径。如果重定位带有日志的文件夹是您的优先事项,并且您愿意拥有一个带有路径(无法重定位)的文件:

/filePaths.something

然后您可以存储(以纯文本、json、xml、二进制或其他形式)其他文件/文件夹的路径。例如:

{
  "logsFolder": "C:/Some/Random/Folders",
  "anotherFile": "D:/Client/Can/Edit/This"
}

您也可以尝试扫描整个文件系统,但有几个缺点:

  • 耗时的过程
  • 扫描名为 Logs(非唯一名称)的文件夹时可能会 return 多次命中

您的客户端 PC 上可能有数以百万计的文件,仅递归扫描文件夹会加快速度,但它仍然会很长。

另一种方法可能是将您的应用程序连接到数据库,但这实际上与上述第一个选项没有区别。总而言之,您可能需要采取一些中间措施来满足技术限制和您的客户。