Откройте текстовый файл с WPF - PullRequest
9 голосов
/ 10 июня 2011

В корневой папке моего проекта есть текстовый файл, который я создал.Теперь я пытаюсь использовать метод Process.Start() для внешнего запуска этого текстового файла.

Проблема, с которой я столкнулся, заключается в том, что путь к файлу неверен и Process.Start() не может найти этот текстовый файл.Мой код выглядит следующим образом:

Process.Start("Textfile.txt");

Так как мне правильно ссылаться на этот текстовый файл?Могу ли я использовать относительный путь вместо абсолютного?Спасибо.

Редактировать: Если я изменил код выше, это будет работать?

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

Ответы [ 5 ]

14 голосов
/ 10 июня 2011

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);
2 голосов
/ 10 июня 2011

То, как вы это делаете, прекрасно.Это найдет текстовый файл, который находится в том же каталоге, что и ваш 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");

Это для открытия файла в папке, которую вы добавляете в проект и которая называется ресурсами.Если вы хотите, чтобы это было в корне вашего проекта, просто удалите папку ресурсов в двух вышеприведенных строках, и все будет хорошо.

1 голос
/ 10 июня 2011

Попробуйте использовать путь Application.StartupPath, поскольку путь по умолчанию может указывать на текущий каталог.

Этот сценарий описан по следующим ссылкам.

Environment.CurrentDirectory в C # .NET

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

1 голос
/ 10 июня 2011

Вам нужно знать текущий каталог, если вы хотите использовать относительный путь.

System.Envrionment.CurrentDirectory 

Вы можете добавить это к своему пути с помощью Path

System.IO.Path.Combine(System.Envrionment.CurrentDirectory, "Textfile.txt")
0 голосов
/ 10 июня 2011

На коробке окна:

Запустите блокнот с указанием местоположения файла сразу после него. WIN

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