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

これが私がやりたいことです。Itemは、ファイル名を含む文字列です。穴のひもはそのようなものです

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

彼がStreamReaderを生成しようとする前に。パスの何が問題になっていますか?

4

3 に答える 3

8

StreamReader は、文字データを読み取るために設計されています。mp3 ファイルのコンテンツなどのバイナリ データを読み取ろうとしている場合は、代わりにBinaryReaderを使用する必要があります。

更新: マークが指摘したように、ストリームを使用してファイルを読み取ることもできます。これにより、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 に答える