我有这段代码:
private void SaveStreamToFile(string fileFullPath, Stream stream)
{
if (stream.Length == 0) return;
// Create a FileStream object to write a stream to a file
using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length))
{
// Fill the bytes[] array with the stream data
byte[] bytesInStream = new byte[stream.Length];
stream.Read(bytesInStream, 0, (int)bytesInStream.Length);
// Use FileStream object to write to the specified file
fileStream.Write(bytesInStream, 0, bytesInStream.Length);
}
}
我将此方法称为此SaveStreamToFile(@“f:\ Test.txt”,memoryStream);
我收到错误:不允许文件操作。访问路径'f:\ Test.txt'被拒绝。
答案 0 :(得分:8)
嗯,大概这意味着您没有f:\Test.txt
的写入权限。这确实是.NET范围之外的问题。
但是,您的方法已被破坏。这里:
byte[] bytesInStream = new byte[stream.Length];
stream.Read(bytesInStream, 0, (int)bytesInStream.Length);
你假设你可以得到流的长度(并非所有的流都支持这个),你也假设 Read
将一气呵成地阅读整篇文章。情况不一定如此。
如果您使用的是.NET 4,则可以使用Stream.CopyTo
,这将使生活变得更加简单。 (虽然如果流中没有数据,这将无法帮助您中止。)但是您仍然需要修复无法写入f:\Test.txt
的问题。
答案 1 :(得分:0)
我也遇到了这个错误,就像Jon Skeet所说,第一个问题是访问权限。
这是因为我没有使用相对路径来到达目标文件夹。一旦我改变它,它允许我毫无困难地访问和修改。