2016-05-04 17 views
3

我需要對文本文件進行修改並保持原文不變。現在,我正在使用讀寫器並讀取文件,然後將其寫回無法進行修改。讀取/寫入文件與移動文件的時間相同嗎?

不幸的是,文本文件是巨大的,〜2GB,並需要大約一個小時才能完成(因爲文本文件在網絡驅動器上)。

會使用該文件。移動會比讀取/寫入更快嗎?例如,將文本文件移動到本地計算機,執行修改,然後將其移回?

或者,製作原件的副本,然後通過修改,而不必讀/寫?

我當前的代碼:

try 
{ 
    using (StreamReader reader = new StreamReader(filePath)) 
    { 
     using (StreamWriter writer = new StreamWriter(output)) 
     { 
      //go through the whole txt file 
      while (!reader.EndOfStream) 
      { 
       //gets the line 
       line = reader.ReadLine(); 
       if (!modification case goes here)) 
       { 
        writer.Write(line); 
       } 
      } 
     } 
    } 
    } 
} 

任何幫助,將不勝感激!

+1

你有沒有試過將文件複製到本地機器,然後再回來?這會給你一個基準時間,在本地修改文件將花費時間。如果複製來回接近1小時,那麼您不可能從本地進行修改獲得許多好處。 –

+1

表現如何?如果它不在line = reader.ReadLine();那麼文件的位置並不重要,我猜測瓶頸將是您的修改檢查。如果ReadLine();是你的瓶頸,我不認爲在本地移動文件,然後回來會有幫助。 –

+0

感謝您的建議!我會立即測試這些信息並回報。 – Childishforlife

回答

3

使用連接的網絡驅動器,在本地複製文件總是更快,做任何事情並將其複製回來。這樣您就可以使用在磁盤驅動器的硬件級別實現的緩存和提取(預緩存)。網絡吞吐量總是限制爲Network_T_Rate/10的平均公式,以兆字節爲單位表示。因此,例如,如果您擁有100T,與大多數公司網絡一樣,無論讀取還是寫入,您都將獲得〜10Mb/s,因爲另一端的磁盤比網絡快。換句話說,你的瓶頸是網絡。

+0

謝謝zmechanic! – Childishforlife