8

重複の可能性:
C# で Stream を FileStream に変換する

私の質問は、ストリームの FileStream へのキャストに関するものです...

基本的に、ファイルの名前を取得するには、それを行う必要があります。なぜなら、オブジェクト Stream だけがある場合、FileStream の場合に Name プロパティがないためです...

では、それを正しく行う方法、Stream オブジェクトを FileStream にキャストする方法は...?

別の問題は、このストリームが webResponse.GetResponseStream() から来ており、それを FileStream にキャストすると空になることです。基本的にストリームを使用することもできますが、ファイル名を取得する必要があります。

私は3.5を使用しています

何か案は?

4

3 に答える 3

23

演算子を使用しasてキャストを実行します。Streamが実際には でないFileStream場合はnull、例外をスローする代わりに が返されます。

Stream stream = ...;
FileStream fileStream = stream as FileStream;

if(fileStream != null)
{
    //It was really a file stream, get your information here
}
else
{
    //The stream was not a file stream, do whatever is required in that case
}
于 2012-11-30T07:32:22.553 に答える
4

ストリームが実際にファイル ストリームであると仮定すると、次のようにしてうまくいくはずです。

var name = ((FileStream)stream).Name;
于 2012-11-30T07:32:33.363 に答える
2

オプション 1. 確かな場合、そのStreamオブジェクトはFileStream:

var fileStream = (FileStream)stream;

オプション 2.よくわからない場合、そのStreamオブジェクトは ですがFileStream、そうである場合は便利です。

var fileStream = stream as FileStream;
if (fileStream != null)
{
    // specific stuff here
}

通常、より具体的な型へのキャストは、コードを注意深く調べ、場合によってはコードをリファクタリングするための合図であることに注意してください。

于 2012-11-30T07:33:37.810 に答える