2017-04-13 20 views
0

저울의 값으로 채워진 버퍼 파일을 삭제하고 싶습니다. 여기까지 여기 내 코드가 있습니다. 그러나 정의 된 파일 크기에 도달하면 전체 파일을 삭제합니다.대형 버퍼 파일을 방지하는 가장 좋은 방법은 무엇입니까?

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

나는 더 나은 방법이있을 것이라고 확신합니다. 전체 파일을 삭제하지 않고 las 값을 유지합니다. 그러나 어떻게? 누군가 도움을 줄 수 있기를 바랍니다.

+0

어떻게 버퍼 파일을 채우고 있습니까? – BugFinder

+1

'... ReadAllBytes ...'** 모든 ** 바이트, 그리고 파일이'100GB '이면 어떻게 될까요? 길이가 50 이상인 새로운 FileInfo ({{}}) –

+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); 
    }