2009-07-10 2 views
1

많은 시간 동안 진행된 배치 작업을 실행하고 있으며 생성되는 로그 파일의 크기가 매우 빨라지고 디스크 공간이 걱정됩니다 .다른 프로세스에서 사용중인 경우 큰 텍스트 파일을 프로그램 적으로 비우기

명령 줄이나 다른 방법으로 파일의 핸들을 가지고있는 텍스트 파일 (내용을 다시 설정하지 않음)을 비울 수있는 방법이 있습니까?

작업을 중지하고 싶지 않고이 파일을 통해 디스크 공간을 확보하려고합니다.

Im을 Vista, 64 비트에 설치하십시오.

감사합니다.

답변

1

글쎄, 그것은 실제로 일하는 방식에 달려 있습니다. 좋은 어린 아이이고 로그 정보가 stdout 또는 stderr로 파이프되면 출력을 프로그램에 리디렉션하여 내용을 디스크에 쓰고 크기를 관리 할 수 ​​있습니다.

작업 코드에 액세스 할 수 있으면 각 쓰기 작업 후 파일을 닫으라는 명령을 내릴 수 있습니다. 실제로 작업을 끝내면 실제로 파일을 지울 수있는 타임 슬라이스가 생깁니다.

둘 중 하나가 없으면 조금 어려울 것입니다. 누군가가 파일에 대해 열린 핸들을 가지고 있다면, 개발자가 더 나은 솔루션을 찾거나 디스크 공간을 지우지 않고 애플리케이션 개발자에게 요청하지 않고 IMO를 할 수있는 것이 많지 않습니다.

0

로그 파일을 쓰는 방법에 따라 다릅니다. 파일 핸들은 다음에 쓸 위치의 오프셋을 가지고 있기 때문에 파일 시작 부분을 삭제할 수 없습니다. 처음 50MB를 지우더라도 여전히 파일에 100MB를 기록합니다.

파일의 이름을 변경하고 새 파일을 만들려고 할 수 있습니다. 일반적으로 롤링 로그가 작동하는 방식입니다.

+0

감사합니다. 그러나 다른 프로세스에서 사용하고있는 파일의 이름을 바꾸는 것을 허용하지 않습니다. – barfoon

0

롤링 로그 클래스를 사용할 수 있습니다. 롤링 클래스는 일반 파일 클래스를 래핑하지만 파일이 지정된 최대 크기에 도달 할 때 자동으로 파일의 처음으로 되돌아갑니다.

매우 간단하게 작성하거나 직접 작성하거나 온라인으로 구현을 시도해보십시오.

관련 문제