如果我对FileStream的理解是正确的,请更正

时间:2012-08-24 15:10:54

标签: azure stream blob

当我尝试从高清阅读文件时

FileInfo fi = new FileInfo(ofd.FileName);
if (fi.Exists)
    FileStream stream = fi.Open(FileMode.Open, FileAccess.Read);

当我检查我的stream.Position和stream.Length时,它们都是相同的。一般来说,我希望stream.Position应为零。因为我还没有读过流中的内容。

但是我可以看到stream.Position在流中的最后位置。由于Position和Length之间没有区别,当我尝试使用UploadFromStream(stream)将文件上传到BLOB时,它失败了。当然,我有另一个解决方法来使代码工作。但我要问的是为什么我必须重置上传文件到BLOB的位置。

1 个答案:

答案 0 :(得分:0)

默认的FileStream行为是stream.position将设置为0,除非您已阅读内容。如果您只是将代码仅用于测试,您将看到stream.position设置为0,但stream.length = 0xLENGTH。我刚刚测试了你的代码如下,我可以看到完全相同的结果。

 string filename = @"c:\2012\Procmon.exe";
 FileInfo fi = new FileInfo(filename);
 FileStream stream = fi.Open(FileMode.Open, FileAccess.Read);

当您将stream作为参数传递给函数时,我遇到了类似的事件,在这种情况下,流位置一直设置为流长度,这与您的情况非常相似。这个SO discussion讨论了与你类似的情况。