C#为什么我的文件路径上出现NotSupported异常

时间:2009-09-20 21:04:51

标签: c# streamreader

StreamReader fr = new StreamReader("D:\\test\\" + item);

这就是我想要做的。 Item是一个带文件名的String。孔串就像那样

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

因为他试图生成StreamReader。 什么路径错了?

3 个答案:

答案 0 :(得分:8)

StreamReader专为读取字符数据而设计。如果您尝试读取二进制数据(例如mp3文件的内容),则应使用BinaryReader

更新:正如Marc指出的那样,你也可以使用Stream来读取文件,这可能比BinaryReader提供了一个更易于使用的操作文件界面。此外,我建议在构建您要访问的文件的路径时使用Path.Combine

答案 1 :(得分: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 :(得分: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.

所以我的猜测是你的道路有问题。