2017-04-13 63 views
0

我想刪除一個緩衝區文件,由一個比例值填充。 到目前爲止,這裏是我的代碼。但是在達到定義的文件大小後它會刪除整個文件。防止超大緩衝區文件的最佳方法?

if(File.ReadAllBytes("buffer1").Length >= 50) 
       { 
        File.Delete("buffer1"); 
       } 

我相信還有更好的辦法。不刪除整個文件並保留其中的las值。但是如何? 希望有人能幫助。

+0

你是如何填充緩衝區文件? – BugFinder

+1

'... ReadAllBytes ...'**所有**字節,以及如果文件長度爲100 GB,該怎麼辦?當你想只是大小'if(新的FileInfo(@「buffer1」)。長度> = 50){...}' –

+0

我嘗試了FileInfo @第一,不知道爲什麼,但它沒有工作......我一定已經完成有問題。謝謝! –

回答

1

如果要從文件中刪除前幾個值,最好的方法是將其餘值複製到第二個文件。然後你可以用新文件覆蓋原始文件。這裏是一些示例代碼。

const string yourfile = "buffer1"; 
    const string tempfile = "buffer1edit.bin"; 

    System.IO.FileInfo fi = new System.IO.FileInfo(yourfile); 
    if (fi.Length > 50) 
    { 
     using (System.IO.FileStream originalfile = System.IO.File.Open(yourfile, System.IO.FileMode.Open), 
      newfile = System.IO.File.Open(tempfile, System.IO.FileMode.CreateNew)) 
     { 
      originalfile.Seek(50, System.IO.SeekOrigin.Begin); 
      originalfile.CopyTo(newfile); 
     } 

     System.IO.File.Delete(yourfile); 
     System.IO.File.Move(tempfile, yourfile); 
    }