使用WPF打开文本文件

时间:2011-06-10 02:59:29

标签: c# .net wpf visual-studio-2010 text-files

我在项目根文件夹中创建了一个文本文件。现在,我正在尝试使用Process.Start()方法从外部启动该文本文件。

我遇到的问题是文件路径不正确,Process.Start()无法找到此文本文件。我的代码如下:

Process.Start("Textfile.txt");

那么我应该如何正确引用该文本文件?我可以使用相对路径而不是绝对路径吗?感谢。

编辑: 如果我将上面的代码更改为此,它会起作用吗?

string path = Assembly.GetExecutingAssembly().Location;
Process.Start(path + "/ReadMe.txt");

5 个答案:

答案 0 :(得分:13)

Windows需要知道在哪里找到该文件,因此您需要以某种方式指定:

使用绝对路径:

Process.Start("C:\\1.txt");

或设置当前目录:

Environment.CurrentDirectory = "C:\\";
Process.Start("1.txt");

通常CurrentDirectory设置为可执行文件的位置。

[编辑]

如果文件位于可执行文件所在的目录中,则可以使用以下代码:

var directory = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
var file = Path.Combine(directory, "1.txt");
Process.Start(file);

答案 1 :(得分:2)

你这样做的方式很好。这将找到与您的exe在同一目录中的文本文件,它将使用默认应用程序(可能是notepad.exe)打开它。以下是更多如何执行此操作的示例:

http://www.dotnetperls.com/process-start

但是,如果要放入路径,则必须使用完整路径。您可以使用此帖中列出的方法构建完整路径,同时仅关注相对路径:

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/e763ae8c-1284-43fe-9e55-4b36f8780f1c

它看起来像这样:

string pathPrefix;

if(System.Diagnostics.Debugger.IsAttached())
{
    pathPrefix = System.IO.Path.GetFullPath(Application.StartupPath + "\..\..\resources\");
}
else
{
    pathPrefix = Application.StartupPath + "\resources\";
}

Process.Start(pathPrefix + "Textfile.txt");

这用于在您添加到项目中的文件夹中打开一个名为resources的文件。如果你想在你的项目根目录中,只需删除上面两个字符串中的资源文件夹,你就可以了。

答案 2 :(得分:1)

如果要使用相对路径,则需要知道当前目录。

System.Envrionment.CurrentDirectory 

您可以使用路径

将其附加到路径中
System.IO.Path.Combine(System.Envrionment.CurrentDirectory, "Textfile.txt")

答案 3 :(得分:1)

尝试使用Application.StartupPath路径,因为默认路径可能指向当前目录。

此方案已在以下链接中解释..

Environment.CurrentDirectory in C#.NET

http://start-coding.blogspot.com/2008/12/applicationstartuppath.html

答案 4 :(得分:0)

在Windows框中:

使用紧随其后的文件位置启动记事本。 WIN

process.start("notepad C:\Full\Directory\To\File\FileName.txt");
相关问题