[英]C# write an uploaded file to a UNC with FileStream, read it later sometimes doesn't work
我遇到了一種罕見的情況,即文件寫入后無法立即從UNC路徑讀取文件。 這是工作流程:
這似乎僅在我們的服務器閑置了一段時間后才發生。 如果我重復上傳幾次,它將開始工作。
我認為這可能是網絡配置問題,或者與文件再次讀取之前未完全關閉有關。
這是寫入文件的代碼的一部分(在這種情況下,文件流還可以嗎?)
SaveStream(stream, new FileStream(fileName, FileMode.Append, FileAccess.Write));
這是SaveStream的定義:
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。
謝謝
這類錯誤主要是由於文件尚未關閉。 嘗試將fileName傳遞給SaveStream,然后按以下方式使用它:
private static void SaveStream(Stream stream, string fileName)
{
using (var fs = new FileStream(fileName, FileMode.Append, FileAccess.Write))
{
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();
} // end of using will close and dispose fs properly
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.