[英]How to convert CloudFileStream to FileStream?
我有一個使用IO.FileStream
讀取文件的應用程序。 我們正在將存儲移動到 Azure 文件存儲。 如何在 c# CloudFileStream
IO.FileStream
轉換為IO.FileStream
?
有 2 種可能的答案,取決於你想做什么,
如果您想編寫一個可以處理兩種類型流的類,那么最簡單的方法是將該類基於所有流共有的抽象流類
如果要將數據從一個流復制到另一個流,則可以使用CopyTo 函數,但需要 .Net4 或更高版本
來自 MSDN
// Create the streams.
MemoryStream destination = new MemoryStream();
using (FileStream source = File.Open(@"c:\temp\data.dat",
FileMode.Open))
{
Console.WriteLine("Source length: {0}", source.Length.ToString());
// Copy source to destination.
source.CopyTo(destination);
}
Console.WriteLine("Destination length: {0}", destination.Length.ToString());
由於這些類是同級類(都派生自Stream
)並且沒有父/子關系,因此無法直接將一個類轉換為另一個類。 您需要使用本地文件來使用FileStream
而不是復制到 Azure 的CloudFileStream 。 https://msdn.microsoft.com/en-us/library/system.io.path.gettempfilename(v=vs.110).aspx )
筆記
Stream
作為大多數方法的參數,因為您將能夠處理更多類型(包括這兩種)。FileStream
並將CloudFileStream
內容復制到/從 lcal 文件復制 - 使用Path.GetTemplFileName ans name 創建臨時文件,並確保在操作完成后清理它們。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.