2012-12-07 211 views
23

我有一個C#項目(Windows控制檯應用程序)。 我已經創建了一個名爲Data的文件夾。文件夾Data中有兩個文本文件。從文件夾中讀取文件

如何從「數據」文件夾中讀取文本文件。 我嘗試了下面的東西。

string[] files = File.ReadAllLines(@"Data\Names.txt") 

這是thowing錯誤,找不到文件。

我檢查了一些Stackoverflow答案發布之前,沒有一個是爲我工作。

我該怎麼辦?謝謝!

+0

谷歌「當前目錄」。可執行文件不會從你的源代碼文件夾中運行! –

+0

在構建項目時是否將此數據文件夾複製到輸出中?檢查文件上的選項並進行更正。 – ryadavilli

+0

設置是始終複製到輸出目錄。 – SKJ

回答

46

下面的代碼應該工作:

string path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), @"Data\Names.txt"); 
string[] files = File.ReadAllLines(path); 
+0

我的文件夾和文件不存在於程序集文件夾中:s ..爲什麼? –

+5

在Visual Studio中,標記文件,然後將'Build Action'設置爲'Content',將'Copy Action Output'設置爲'Copy always'。 –

+0

只需使用@「Data \ Name.txt」應用@FlorianMoser符號 –

16

這取決於哪裏就是你的數據文件夾

要得到所在目錄下.exe文件是:

AppDomain.CurrentDomain.BaseDirectory 

爲了得到當前目錄:

Environment.CurrentDirectory 

然後你就可以連接您的目錄路徑(@"\Data\Names.txt"

9

如果你需要得到一個名爲「數據」文件夾中的所有文件,只需將其代碼如下

string[] Documents = System.IO.Directory.GetFiles("../../Data/"); 

現在的「文檔」包括兩個文本的完整對象名稱的數組'數據'文件夾'數據'中的文件。始終

+0

@Bunyip :你需要閱讀文本文件的內容還是隻需要知道文件夾中的文件? –

+0

謝謝你,爲我工作! –

5

複製到輸出目錄設置,那麼請嘗試以下操作:

Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory); 
String Root = Directory.GetCurrentDirectory(); 
5

我有一個C#項目(Windows控制檯應用程序)。我在項目中創建了一個名爲Images的文件夾。有一個名爲MyIcon.ico的ico文件。我在下面的Images文件夾中訪問了MyIcon.ico。

this.Icon = new Icon(@"../../Images/MyIcon.ico"); 
1

使用此代碼在文件夾中讀取所有文件和子文件夾也

class Program 
{ 
    static void Main(string[] args) 
    { 

     getfiles get = new getfiles(); 
     List<string> files = get.GetAllFiles(@"D:\Document"); 

     foreach(string f in files) 
     { 
      Console.WriteLine(f); 
     } 


     Console.Read(); 
    } 


} 

class getfiles 
{ 
    public List<string> GetAllFiles(string sDirt) 
    { 
     List<string> files = new List<string>(); 

     try 
     { 
      foreach (string file in Directory.GetFiles(sDirt)) 
      { 
       files.Add(file); 
      } 
      foreach (string fl in Directory.GetDirectories(sDirt)) 
      { 
       files.AddRange(GetAllFiles(fl)); 
      } 
     } 
     catch (Exception ex) 
     { 

      Console.WriteLine(ex.Message); 
     } 



     return files; 
    } 
} 
相關問題