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

这就是我想做的。Item 是一个带有文件名的字符串。孔弦是这样的

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

在他尝试生成 StreamReader 之前。路径有什么问题?

4

3 回答 3

8

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

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

于 2009-09-20T21:09:39.080 回答
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))) {
    // ...
}

(当然,正如在别处提到的,aStreamReader可能不适合 mp3)

于 2009-09-20T21:09:03.600 回答
2

查阅 StreamReader的MSDN 文档,我不NotSupportedException认为该 API 将抛出异常。但是,另一个类似的构造函数重载确实列出了它:

NotSupportedException: 路径包含文件名、目录名或卷标的不正确或无效语法。

所以我自己尝试了一个无效的卷标,确实得到了NotSupportedException

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

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

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

于 2009-09-20T21:17:57.003 回答