2012-08-24 35 views
1

當我嘗試從HD正確的,如果我上的FileStream理解是正確的

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在流中的最後位置。由於位置和長度沒有區別,當我嘗試使用UploadFromStream(流)將文件上載到BLOB時,它失敗。當然,我還有另一個解決方法來使代碼正常工作。但我關於上述問題,爲什麼我必須重置位置以將文件上載到BLOB。

+0

你可以在打開流和調用UploadFromStream之間發佈你正在使用的代碼嗎? –

回答

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); 

我有過類似的事件,當你路過流作爲參數的函數,在這種情況下,流位置設置所有流長度這是非常類似的情況的方式。這SO discussion談論與你的類似的情況。