2012-03-06 21 views
0

を提出するのMemoryStreamデータを書き込みます。どのように私はこのコードを持って

エラーが発生しました:ファイル操作が許可されていません。パス 'f:\ Test.txt'へのアクセスが拒否されました。

+1

ストリームからバイトを抜き出す必要はなく、 'stream.CopyTo(fileStream);'を使用します。 – ebutusov

答えて

8

おそらく、あなたはf:\Test.txtへの書き込みアクセス権を持っていない可能性があります。これは.NETの範囲外の問題です。

ただし、方法が壊れています。ここでは:あなたはあなたがストリーム(ないすべてのストリームがこれをサポート)の長さを取得することができを想定している、とあなたはReadは一度に全部を読まれることをを想定しても

byte[] bytesInStream = new byte[stream.Length]; 
stream.Read(bytesInStream, 0, (int)bytesInStream.Length); 

。それは必ずしもそうではありません。

.NET 4を使用している場合は、Stream.CopyToを使用するとより簡単になります。ただし、ストリームにデータがない場合は中止するのには役立ちませんが、最初にf:\Test.txtに書き込むことができない問題を修正する必要があります。

0

私もこのエラーに遭遇し、Jon Skeetの示唆するように、最初の問題はアクセス権でした。

これは、相対パスを使用して宛先フォルダに到達しなかったためです。私がこれを変更すると、問題なくアクセスし修正することができました。