StreamReader fr = new StreamReader("D:\\test\\" + item);
这就是我想要做的。 Item是一个带文件名的String。孔串就像那样
"D:\\test\\01-Marriotts Island.mp3"
因为他试图生成StreamReader。 什么路径错了?
答案 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.
所以我的猜测是你的道路有问题。