为txt保存设置正确的文件路径-vb.NET



好的。我觉得这应该是在编程101,但我似乎找不到一个合适的答案,如何将文件路径名设置为足够动态,以便明确设置为exe的安装位置。

基本上,这个应用程序实际上将安装在用户的个人文件夹中,可能类似于本地数据,我需要将程序创建的txt文件创建到与可执行文件相同的目录中。

当前路径:

Dim strFilePath As String = "D:DevelopmentBobbyPrototypingReplication Desktop ClientReplication_Desktop_ClientClientAccessList.txt"

我想把它设置成类似的东西

Dim strCurrentLocationOfEXE As String = HardDriveLetter & Users & CurrentUserPath & InstalledDirectory
Dim strFilePath As String = strCurrentLocationOfEXE & "ClientAccessList.txt"`

但我一辈子都不知道如何让它确定这一点,因为它不会总是安装在同一个文件夹中(即用户名和硬盘号可能不同(。

想法?

您可以获得使用运行程序集的路径

Dim fullPath = System.Reflection.Assembly.GetExecutingAssembly().Location
Dim folderName = Path.GetDirectoryName( fullPath )
Dim strFilePath = Path.Combine(folderName, "ClientAccessList.txt")

如果要引用此应用程序的当前用户个人文件夹,则可以通过Environment.SpecialFolder枚举
此枚举独立于底层操作系统(XP、Win7、x64、x32等(在这种情况下,您可以使用:

Dim fullPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
Dim strFilePath = Path.Combine(fullPath, "your_app_reserved_folder", "ClientAccessList.txt")

在本例中,"your_app_reserved_folder"应该是在安装应用程序期间创建的文件夹,用于放置每个用户的数据文件。(通常这是推荐的存储数据文件的方法,应该由用户分开(

如果你想在尝试使用之前检查文件夹的存在性,只需将获取文件名的逻辑封装在方法中即可

Public Function GetUserAppClientAccessList() As String
    Dim fullPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    Dim appFolder = Path.Combine(fullPath, "your_app_reserved_folder")
    if Not Directory.Exists(appFolder) then
        Directory.Create(appFolder)
    End If
    return = Path.Combine(appFolder, "ClientAccessList.txt")
End Function

这将为您提供可执行文件的文件路径:

Assembly.GetEntryAssembly().Location

然后要获取文件夹路径,可以调用Path.GetDirectoryName。因此,要获得文本文件路径,您可以执行以下操作:

Dim exeFilePath As String = Assembly.GetEntryAssembly().Location
Dim exeFolderPath As String = Path.GetDirectoryName(exeFilePath)
Dim filePath As String = Path.Combine(exeFolderPath, "ClientAccessList.txt")

不过需要注意的是:如果没有.NET程序集可执行文件,例如通过COM将代码作为库调用,则Assembly.GetEntryAssembly可以返回Nothing。在这种情况下,您可能希望通过调用Environment.GetCommandLineArgs()(0)从命令行使用可执行文件路径。如果由于某种原因失败了,您可以始终使用Directory.GetCurrentDirectory()

相关内容

  • 没有找到相关文章

最新更新