2011-06-10 100 views
7

在我的項目根文件夾中創建了一個文本文件。現在,我試圖使用Process.Start()方法從外部啓動該文本文件。用WPF打開一個文本文件

我在這裏得到的問題是文件路徑不正確,Process.Start()找不到這個文本文件。我的代碼如下:

Process.Start("Textfile.txt"); 

那麼我們應該如何正確我參照該文本文件?我可以使用相對路徑而不是絕對路徑嗎?謝謝。

編輯: 如果我改變上面的代碼到這個,它會工作嗎?

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

您需要確保文件被複制,您不能使用'Process.Start'嵌入資源。檢查屬性並分別設置屬性「複製到輸出目錄」。 – 2011-06-10 03:13:59

回答

12

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

如果我這樣做,它會工作嗎? string path = Assembly.GetExecutingAssembly()。Location; Process.Start(path +「/ReadMe.txt」); – woodykiddy 2011-06-10 03:15:11

+0

如果文件與可執行文件位於同一目錄中,則是。但是,您最好使用Path.Combine而不是字符串連接。另外'Location'裏面會有文件名。您只需要獲取目錄。 – 2011-06-10 03:17:16

+0

@woodykiddy - 更新了答案。 – 2011-06-10 03:19:46

1

如果您想使用相對路徑,您需要知道當前目錄。

System.Envrionment.CurrentDirectory 

你可以追加一條到您的路徑與路徑

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

'Process.Start'可以打開幾乎任何東西,它會嘗試使用與該文件關聯的應用程序。 – 2011-06-10 03:08:29

+0

啊。現在我覺得stoopid;) – 2011-06-10 03:09:56

+0

如果'ProcessStartInfo.UseShellExecute'爲true,這是默認值。 – 2011-06-10 03:33:06

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

這是打開一個文件在您添加到名爲資源的項目的文件夾中。如果你想在你的項目根目錄下,只需放下上面兩個字符串中的資源文件夾,你就會很好。

0

在窗口框上:

開始記事本及其緊隨其後的文件位置。贏得

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