繁体   English   中英

使用 WPF 打开一个文本文件

[英]Open a text file with WPF

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

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

Process.Start("Textfile.txt");

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

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

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

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);

你这样做的方式很好。 这将找到与您的 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");

这是为了在您添加到项目的文件夹中打开一个文件,称为资源。 如果你想要它在你的项目根目录中,只需删除上述两个字符串中的资源文件夹,你就会对 go 很好。

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

System.Envrionment.CurrentDirectory 

你可以 append 到你的路径路径

System.IO.Path.Combine(System.Envrionment.CurrentDirectory, "Textfile.txt")

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

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

C#.NET 中的 Environment.CurrentDirectory

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

在 windows 盒子上:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM