我遇到罕見的情況,即寫入文件後無法立即從UNC路徑讀取文件。這裏的工作流程:C#使用FileStream將上載的文件寫入UNC,以後再讀取它有時不起作用
- plupload發送大文件的數據塊到的WebAPI方法
- 方法寫入的塊的UNC路徑(存儲服務器)。這循環直到文件完全上傳。
- 其他幾個操作後,同樣的方法嘗試再次讀取該文件,有時找不到文件
似乎只發生後,我們的服務器已經閒置了一段時間。如果我重複上傳幾次,它就開始工作。
我認爲這可能是一個網絡配置問題,或與文件沒有完全關閉之前再次被讀取。
下面是寫到文件中的部分代碼
SaveStream(stream, new FileStream(fileName, FileMode.Append, FileAccess.Write));
這裏的SaveStream定義(在這種情況下是FILESTREAM OK?):
private static void SaveStream(Stream stream, FileStream fileStream)
{
using (var fs = fileStream)
{
var buffer = new byte[1024];
var l = stream.Read(buffer, 0, 1024);
while (l > 0)
{
fs.Write(buffer, 0, l);
l = stream.Read(buffer, 0, 1024);
}
fs.Flush();
fs.Close();
}
}
下面是讀取文件的代碼:
var fileInfo = new FileInfo(fileName);
var exists = fileInfo.Exists;
這是fileInfo.Exists
返回false。
謝謝
這可能是用於處理存儲文件的硬件和軟件正在睡覺。你可以用腳本重複這個(像PS腳本)嗎? –
@ChristopherStevenson - 你能否詳細說明「睡覺」? – MorganTiley