2009-11-25 88 views
0

我有以下代碼來讀取我的應用程序的根目錄中的文件。出於某種原因,無論有多少次運行,我的文件仍然沒有被讀取。任何想法,我可能做錯了這裏請。提前致謝。不知道爲什麼我的讀者不會讀我的文本文件

byte[] mybytes = null; 
if (File.Exists(filename)) 
{ 
    using (StreamReader sr = new StreamReader(new FileStream(filename, 
           FileMode.Open, FileAccess.Read, FileShare.Read))) 
    { 
     String input; 
     StringBuilder tempstore = new StringBuilder(); 
     while ((input = sr.ReadLine()) != null) 
     { 
      tempstore.Append(input); 
     } 
     mybytes = Encoding.ASCII.GetBytes(tempstore.ToString()); 
     sr.Close(); 
    } 
} 
+1

可能是其驅動器的根目錄 – YOU 2009-11-25 05:21:41

+2

您是否試過單步執行代碼? – 2009-11-25 05:23:18

+0

它是否越過了你的if(File.Exists(filename)) – Simon 2009-11-25 20:39:59

回答

1

你試過File.ReadAllBytes嗎?

 byte[] mybytes = File.ReadAllBytes(filename); 
+0

我最初有它,因爲你有它(File.ReadAllBytes(文件名)),並沒有奏效。所以我把它轉換到了我現在所擁有的東西,而沒有任何東西。 – Kobojunkie 2009-11-25 05:28:57

+1

那麼... ReadAllBytes應該工作得很好...... – Nestor 2009-11-25 05:32:57

1

您是否試過File.ReadAllText(filename); ?

這很容易。

+0

我先試過,然後再決定上面的內容。 – Kobojunkie 2009-11-25 05:31:19

0

ReadLine應該只能用於文本文件。如果你的文件是二進制文件,它可能會在開頭有一個^ Z字符。讓庫認爲它到達了EOF。

+0

好點,因爲他最終把它放入'byte []'這可能是這種情況 – TheVillageIdiot 2009-11-25 05:31:17

+0

文件名實際上是指 string filename = @「outfile.txt」; – Kobojunkie 2009-11-25 05:32:00

+0

沒關係。它可能是一個擴展名爲.txt的二進制文件。試着用記事本打開 – Nestor 2009-11-25 05:34:05

0

如果我逐字複製它,您的代碼適用於我,請添加我自己的filename變量並運行它。有沒有可能filename的值不是您計算機上的有效文件路徑?

+0

,但他正在檢查'File.Exists(文件名)' – TheVillageIdiot 2009-11-25 05:30:29

+0

它通過 如果(File.Exists(文件名)){ ... } 檢查 ,表明該文件不存在((input = sr.ReadLine())!= null) { 它在那裏讀取null並立即跳出我的循環。 – Kobojunkie 2009-11-25 05:30:48

0

您確定filename實際存在嗎?根據您列出的代碼,這確實是可能成爲問題的最可能的事情。

相關問題