2013-10-27 149 views
0

我試圖打開與StreamReader桌面上的文本文件(example.txt)。但是當我運行我的代碼時,它拋出的錯誤信息是:無法找到文件(無論代碼路徑,一直引導到我的項目中的調試文件夾)。所以我想知道,Streamder這個工作的錯誤工具是什麼?如何打開桌面上的文件

這是我正在使用的代碼。

Console.WriteLine("What file would you like to load?"); 
string FileName = Console.ReadLine(); 

StreamReader Reader - new StreamReader(FileName); 

的異常被在StreamReader

回答

4

這可能是因爲你的程序無法找到該文件,因爲它是找錯了地方。您可以矯正像這樣的東西......

private void ReadFromDesktop(string fileName) 
    { 
     string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); 
     string fullName = System.IO.Path.Combine(desktopPath, fileName); 
     using (StreamReader steamReader = new StreamReader(fullName)) 
     { 
      string content = steamReader.ReadToEnd(); 
     } 
    } 

該方法以名稱的文件(大概是你在控制檯上輸入的),然後查詢環境的路徑到您的桌面。

然後它使用Path.Combine方法爲該文件創建完全限定的名稱。結果由流讀取器處理。

問題是,如果你只提供文件名,應用程序將在它的根目錄(也就是你寫的調試目錄)中查找。這個提示是錯誤消息告訴你它使用你的調試目錄的名字創建了一個完整的路徑。

+0

這確實有用。謝謝。 –

2

拋出試試這個:

var reader = File.OpenText(FileName); 

或爲小檔案:

var allText = File.ReadAllText(FileName); 

當然......它總是可能的指定的文件名實際上不存在....對吧?我的意思是,默認情況下,它可能會在.exe旁邊的本地文件中查找,該文件位於/.../.../bin/debug/中。

如果你特別想看看在當前用戶的桌面文件夾中的文件,你可能需要:

var fullPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "\" + FileName; 
var allText = File.ReadAllText(fullPath); 
0

。在你的代碼中沒有明顯的錯誤(假設你使用正確的語法,而不是實際的代碼在你的文章中),但可能是因爲路徑不正確而導致錯誤。

如果該文件存在,並且您使用絕對路徑,你應該能夠做這樣的事情(在Windows上使用驅動器字母開頭):

 Console.WriteLine("What file would you like to load?"); 
     string fileName = Console.ReadLine(); 

     using (Stream reader = new StreamReader(fileName)) 
     { 
      string line = reader.ReadLine(); 
      // ... 
     } 
+0

因此,知道什麼路徑看起來像用作輸入會很有趣。 (不幸的是,我不能直接對此問題發表評論) – glaed

1

「找不到文件」,實際上是什麼發生了。請注意例外的詳細信息,並檢查您是否輸入現有文件名以及擴展名。 也不要忘記處置的StreamReader:

string text; 
    var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), fileName); 
    using (var sr = new StreamReader(path)) 
    { 
     text = sr.ReadToEnd(); 
    } 
相關問題