2009-09-20 65 views
1
StreamReader fr = new StreamReader("D:\\test\\" + item); 

這是一個異常notsupported時正是我想做的事情。 Item是一個帶有文件名的字符串。洞串是這樣的C#爲什麼我得到我的文件路徑

"D:\\test\\01-Marriotts Island.mp3" 

但他試圖生成StreamReader。 路徑有什麼問題?

+1

Markus,您是否設法解決您的問題?如果是這樣,結果是異常的原因?我問的原因是我只是想確保我的答案確實是準確的,並且不會誤導任何未來遇到它的人,例如,如果事實證明,這條道路本身並不完整。 – 2009-09-20 21:41:31

+0

我現在用的方法File.ReadBinary – Markus 2009-09-21 08:15:44

回答

8

StreamReader是專爲閱讀字符數據。如果您嘗試讀取二進制數據(例如mp3文件的內容),則應該使用BinaryReader

更新:正如馬克指出的,你也可以使用Stream來讀取文件,這可能提供了一個比BinaryReader更容易操作的文件接口。另外,我建議在構建要訪問的文件的路徑時使用Path.Combine

+2

好點。我不確定我會使用'BinaryReader' - 只是'Stream' – 2009-09-20 21:12:30

4

有沒有更多的消息與它一起使用?對於信息,爲路徑結合起來,最簡單的方法是用Path.Combine

using(StreamReader fr = new StreamReader(Path.Combine(@"D:\Test", item))) { 
    // ... 
} 

(注還using,以確保它被設置)

或更清晰依舊(IMO):

using(StreamReader fr = File.OpenText(Path.Combine(@"D:\Test", item))) { 
    // ... 
} 

(當然,正如其他地方已經提到的,StreamReader可能不適合MP3)

2

諮詢MSDN documentation for StreamReader,我沒有看到NotSupportedException列爲此API將引發的異常。然而,another similar constructor overload並列出它:

NotSupportedException:路徑包括 爲 文件名,目錄名或卷 標籤不正確或無效的語法。

所以我用一個無效的卷標嘗試過自己,確實得到了NotSupportedException

StreamReader reader = new StreamReader("DD:\\file.txt"); 

// throws... 
// 
// Unhandled Exception: System.NotSupportedException: The given path's format is not supported. 

所以我的猜測是有什麼不對您的路徑。

相關問題