2017-04-13 7 views
0

バッファからファイルを削除して、スケールの値で埋めています。 これまでここに私のコードです。ただし、定義されたファイルサイズに達すると、ファイル全体が削除されます。特大のバッファファイルを防ぐ最も良い方法は?

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

私は確かに良い方法があります。ファイル全体を削除せずにlas値を保持しないでください。しかしどうですか? 誰かが助けてくれることを願っています。

+0

どのようにバッファファイルを満たしていますか? – BugFinder

+1

'... ReadAllBytes ...' **すべての**バイト、ファイルが '100GB 'の場合はどうなりますか?長さ> = 50){...} ' –

+0

私は最初にFileInfoを試しましたが、理由はわかりませんが、うまくいきませんでした。何か問題でも。ありがとうございました! –

答えて

1

ファイルから最初のいくつかの値を削除する場合は、残りの値を2番目のファイルにコピーするのが最善の方法です。その後、元のファイルを新しいファイルで上書きすることができます。ここにいくつかのコード例があります。

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); 
    } 
関連する問題