簡體   English   中英

如何將 CloudFileStream 轉換為 FileStream?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM