如何避免硬编码文件路径?

时间:2019-07-28 20:58:20

标签: vb.net

我需要检查文件是否存在以及文件是否存在,然后应将文件覆盖。 如果我的硬编码路径用于我自己的计算机,则工作正常,但如果在另一台PC上使用,则会出现错误。我该如何检查并覆盖文件?

我已经问了Google几个小时,但没有找到解决方法。

Dim gamecfg As String = "\Riot Games\League of Legends\Config\game.cfg"

If System.IO.File.Exists(gamecfg) = True Then    
    on.Visible = True
    off.Visible = True
Else
    MsgBox("Game.cfg was not found", MsgBoxStyle.Critical, "Error")
    End
End If

Dim gamecfgSON As String = "\Riot Games\League of Legends\Config\game.cfg"
Dim cfgWriterSON As New System.IO.StreamWriter(gamecfgSON)

cfgWriterSON.Write(RichTextBox1.Text)
cfgWriterSON.Close()

因此,如果在以下位置找到文件作为示例:E:\ Games \ League of Legends \ 然后说找不到Game.cfg

希望你能帮助我。

3 个答案:

答案 0 :(得分:1)

您有几种可能性:

  • 检查游戏是否写入任何包含路径的注册表项。如果是这种情况,那么很有可能在任何地方都有相同的注册表项名称。

  • 在文件所在的对话框中询问用户,提示其默认安装路径。

  • 使用包含相应路径的命令行参数来调用您的应用程序。

  • 搜索驱动器,但这可能会非常慢。

答案 1 :(得分:0)

您通常可以通过以下几种方式之一找到文件:

  1. 从注册表中提取信息。
  2. 尝试最明显的路径组合。
  3. 启发式搜索。
  4. 询问用户。

启发式搜索:在所有驱动器上的所有文件夹中搜索“防暴游戏”和“英雄联盟”,限制搜索深度并避免明显的陷阱,例如“ Windows *”,“ $ Recycle.Bin”等)。通常,您会进行多次迭代,例如首先仅搜索名称中带有“游戏”的文件夹。

答案 2 :(得分:0)

尝试找出父路径 File dir = new File( System.getProperty("user.dir") + "/.") String parentPath = dir.getParentFile().getName()

相关问题