在vb.net中打开特定文件

时间:2013-10-09 15:03:59

标签: vb.net filepath

我希望我的程序打开一个特定的.txt文件。文本文件将始终保留在解决方案文件夹中的同一文件夹中。但是,如果将解决方案移动到另一台计算机或当前计算机上的其他目录,解决方案文件夹本身的位置可能会更改。

我知道如何硬编码文件路径附加文件名,然后打开它。但是,如何定义文件路径,以便在解决方案移动到另一台计算机时仍可以打开文件?

4 个答案:

答案 0 :(得分:2)

如果文件包含在解决方案中,您可以使用虚拟路径,然后使用Server.MapPath

将其映射到物理路径

以下内容应该有效:

Dim filePath As String = Server.MapPath("~/FileName.txt")

请注意,我的示例中FileName.txt的位置位于解决方案的根目录中,而不是在任何指定的文件夹中,~/本质上是当前解决方案的根目录。

有关Server.MapPath方法和虚拟路径的详细信息,请参阅以下内容:

Server.MapPath MSDN Documentation

Virtual Path Utility Class

答案 1 :(得分:1)

如果您要询问桌面应用程序,application.ExecutablePath将执行您想要的操作。但这并不是一个好主意,如果你的应用程序将驻留在程序文件中 - 最好避免写入其中的任何地方,并且你必须在XP后的操作系统上以管理员身份运行&#39 ; s。

答案 2 :(得分:1)

如果您的意思是说您的FileName.txt始终与程序集位于同一目录中,您可以执行以下简单操作:

Function GetAssemblyDirectoryPath() As String
    Dim fullAssemblyPath As String = System.Reflection.Assembly.GetExecutingAssembly().Location
    Return fullAssemblyPath.Substring(0, fullAssemblyPath.LastIndexOf("\"c))
End Function

这只返回程序集所在文件夹的路径。 “解决方案”可能并不总是存在,但程序集将会出现,因此这在两种情况下都有效(如果确保文件始终复制到输出目录中)。

答案 3 :(得分:1)

如果您确定您的应用程序(.exe)和(.txt)文件位于同一文件夹中,那么只需使用文件名 - 不要放置路径。

IO.File.OpenText("thefile.txt")

编辑: 大多数“当前工作目录”与(.exe)文件所在的目录相同。是的,有时,它不是同一个目录。因此,Application.ExecutablePath将是正确的解决方案。

Dim fn As String
fn = Application.ExecutablePath.Remove(Application.ExecutablePath.LastIndexOf("\")+1) & "thefile.txt"
IO.File.OpenText("thefile.txt")

...