2010-02-18 126 views
4

我想從本地目錄中讀取文本文件,我將文本文件添加到了我的c#解決方案中,因此它會在部署時被複制..但是如何打開它?我一直在尋找,但所有的例子假設我有一個C:\ TextFile.txt的:從本地文件夾中讀取文本文件

我嘗試了讀取文件

if (File.Exists("testfile.txt")) 
{ 
    return true; 
} 

這沒有奏效。然後我試過:

if (File.Exists(@"\\TextConsole\testfile.txt")) 
{ 
    return true; 
} 

但仍然不會打開它..任何想法??

+0

的TESTFILE.TXT是在解決方案的目錄。它不會被複制到構建目錄。你將不得不知道它的文件路徑。 – 2010-02-18 20:12:10

回答

21

僅僅因爲你添加到您的解決方案,並不意味着該文件被放置到你的輸出build目錄的檢查後。如果您想使用相對路徑,請確保您的TextFile在構建期間被複制到輸出目錄。要做到這一點,在解決方案資源管理器去的文本文件的屬性並設置Copy to Output DirectoryAlwaysCopy if newer

然後你可以使用

File.Open("textfile.txt"); 
+0

偉大的這爲我工作! – 2011-08-01 18:30:12

+1

確保在項目屬性窗格中將「複製到輸出目錄」設置爲true。這會將文件複製到讀取訪問將發生的bin目錄。 – 2014-10-17 14:11:10

3

你需要使用下列情況之一,你已經取得

string path = @"\\TextConsole\testfile.txt"; 
if (File.Exists(path)) 
{ 
    FileStream fileStream = File.OpenRead(path); // or 
    TextReader textReader = File.OpenText(path); // or 
    StreamReader sreamReader = new StreamReader(path); 
} 
+0

它不會找到該文件,因爲它不存在於他的構建目錄中。 – 2010-02-18 20:15:36

+0

在我眼中,正確的方法是'string txtPath = Path.Combine(Environment.CurrentDirectory,「testfile.txt」);'。 – Bobby 2010-02-18 20:15:56

0

如果該文件確實是在c:\textfile.txt,你可以找到像這樣:

if (File.Exists(@"c:\testfile.txt")) 
{ 
    return true; 
} 

但是,你應該使用Path.Combine建立一個嵌套的文件路徑和DriveInfo與驅動器的詳細工作。

2

本示例使用StreamReader類的ReadLine方法逐個讀取文本文件的內容爲一個字符串。每個文本行都存儲在字符串行中並顯示在屏幕上。

int counter = 0; 
    string line; 

// Read the file and display it line by line. 
System.IO.StreamReader file = new System.IO.StreamReader("c:\\test.txt"); 

while((line = file.ReadLine()) != null) 
{ 
    Console.WriteLine (line); 
    counter++; 
} 

file.Close(); 

// Suspend the screen. 
Console.ReadLine(); 

參考http://msdn.microsoft.com/en-us/library/aa287535%28v=vs.71%29.aspx