2012-01-14 94 views
1

我有這個閱讀微軟從未知位置讀取文件?

@"C:\Users\computing\Documents\mikec\assignment2\task_2.txt" 

文件代碼即時通訊工作也就罷了,但是當我在這個任務交出我的講師是不會有相同的目錄中我工作正常。

所以我想知道是否有一種方法來從程序被保存在文件中讀取?

我在想我可以將它作爲資源添加,但我不知道這是否是任何文件允許的賦值的正確方法。

感謝

+0

也許只是我,但我真的沒有得到什麼是你的麻煩...... – 2012-01-14 11:21:06

+0

爲什麼不只是一個'FileBrowserDialog'? – 2012-01-14 11:23:47

回答

4

可以跳過路徑 - 這會從程序的工作目錄中讀取文件。

只需要@"task_2.txt"就可以。

UPDATE:請注意該方法在某些情況下不起作用。如果您的講師使用一些自動化的跑步者(腳本,應用程序)來驗證您的應用程序,那麼@ ken2k的解決方案將更加健壯。

+0

如果該文件不在工作目錄內,該怎麼辦? – 2012-01-14 11:23:26

+3

@DarinDimitrov但他的問題表明它是 – 2012-01-14 11:25:59

+0

那麼當然它不會起作用。我只是提出了一種可能的方法來解決這個問題。 – 2012-01-14 11:30:34

0

你可以使用GetFolderPath方法來獲取當前用戶的文件夾:

Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) 

,並舉例說明:

string myDocuments = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
string file = Path.Combine(myDocuments, @"mikec\assignment2\task_2.txt"); 
// TODO: do something with the file like reading it for example 
string contents = File.ReadAllText(file); 
+1

他詢問程序所在的地方,而不是我的文檔 – 2012-01-14 11:25:30

2

如果你想讀取文件從程序所在的目錄中,然後使用

using System.IO; 
... 
string myFileName = "file.txt"; 
string myFilePath = Path.Combine(Application.StartupPath, myFileName); 

編輯:非的WinForms應用 更通用的解決方案:

string myFilePath = Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), myFileName); 
+0

Application.StartupPath可能與文檔文件夾不同。該應用程序可以部署在例如Program Files中。 – 2012-01-14 11:23:05

+2

你說得對,但我不認爲OP想專門使用Documents文件夾。 – ken2k 2012-01-14 11:25:07

1

如果是命令行應用程序,則應該將文件名作爲命令行參數,而不是使用固定路徑。某事沿着;

public static void Main(string[] args) 
{ 
    if (args == null || args.Length != 1) 
    { 
     Console.WriteLine("Parameters are not ok, usage: ..."); 
     return; 
    } 

    string filename = args[0]; 

... 

...應該讓你從命令中獲取文件名。

0

使用相對路徑。

您可以將您的文件放入應用程序所在的文件夾中。 你可以使用Directory.GetCurrentDirectory()。ToString()方法獲取應用程序的當前文件夾。如果你把你的文件放到你可以使用的子文件夾中 Directory.GetCurrentDirectory()。ToString()+「\ subfolderName 「

File.OpenRead(Directory.GetCurrentDirectory().ToString() + "\fileName.extension") 


StreamReader file = new StreamReader(File.OpenRead(Directory.GetCurrentDirectory().ToString() + "")); 
      string fileTexts = file.ReadToEnd();