2016-07-22 3 views
0

내 애플 리케이션에 끊임없이 쓰여지고 때로는 크기를 확인해야하는 로그 파일이 있습니다. 문제는 다른 스레드에서 크기를 빠르게 확인할 때마다 명확한 데이터가 있더라도 0을 반환하는 경우가 있다는 것입니다.안드로이드 File.length() 쓸 때 0을 반환합니다

예를 들어 파일 크기 출력은 다음과 같을 것이다 : (숫자는 바이트)

E/DataLogger: Size: 3403 
E/DataLogger: Size: 3454 
E/DataLogger: Size: 3454 
E/DataLogger: Size: 3454 
E/DataLogger: Size: 0 
E/DataLogger: Size: 3500 
E/DataLogger: Size: 3500 
E/DataLogger: Size: 3812 

나는 또한 FileUtils.readFileToByteArray()와 함께 노력하고 같은 동작을 나타났습니다. 왜이 두 메소드가 모두 0을 무작위로 반환합니까?

답변

0

필자는 때때로 파일을 덮어 쓰면서 새로운 데이터를 기록하기 전에 파일 크기를 0으로 설정하는 것으로 나타났습니다.

0

사용중인 로깅 API를 모르지만 로깅 API의 대부분은 파일이 정의 된 크기에 도달하면 로테이션 시스템을 사용합니다. 로테이션이 발생하면 로거는 실제 로그 파일을 보관하기 위해 파일이나 파일 내용에서 일부 이동 작업을 수행 할 수 있습니다. 한 번에 파일 크기를 0으로 설명합니다.

는 일반적으로, 당신은

더 알려면 (... 아카이브 회전을 유발 파일 크기, 아카이브 로그의 수 등) 파일 회전을 사용자 정의 할 수 있습니다 당신은 당신의 로깅 API의 회전 PARAMS를 공부할 수 있습니다.

관련 문제