Откройте текстовый файл с помощью WPF

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

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

Process.Start("Textfile.txt");

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

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

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

5 ответов


Windows должна знать, где найти файл, поэтому вам нужно как-то указать, что:

либо используя абсолютный путь:

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

или установить текущий каталог:

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

обычно CurrentDirectory устанавливается в расположение исполняемого файла.

[Edit]

если файл находится в том же каталоге, где исполняемый файл, вы можете использовать код следующим образом:

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

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


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

System.Envrionment.CurrentDirectory 

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

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

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

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

окружающая среда.CurrentDirectory в C#.NET

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


в окне windows:

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

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