자바로 tail -f 를 구현할려고 합니다.

idccc의 이미지

자바로 tail -f <file> 를 구현 할려고 합니다..

리눅스 명령어 tail -f <file>를 하면 마지막 몇줄을 우선 보여주고 추가되는 부분을 뿌려주는데.. 이부분을 어떻게 해야할지 몰라서 무식하게 readLine()를 여러번 호출하여서 mark하고 출력 하고있습니다.

근데 이 부분도 파일 전체의 라인 갯수를 구하는 방법을 몰라서 넘길 라인을 인자로 받아서 처리 하고있습니다.

리눅스 명령어 wc -l <file> 같은 효과를 낼려면.. 자바에서 어떻게 구현 해야 할까요?

api가 있는지 잘 모르겠습니다...

아니면 readLine()를 여러번 호출하지 않고도 효과적으로 마지막 몇 라인부터 출력하는 방법있으면 조언 부탁드립니다.

1만 라인이 넘어가는 파일을 넘겨주니 처음 실행에 readLine()을 출력한다고 실행속도가 꽤 늦네요.

많은 가르침 부탁드립니다.

lacovnk의 이미지

뒤에서부터 읽는 방법이 있지 않을까요? :)

없나.. orz

idccc의 이미지

lacovnk wrote:
뒤에서부터 읽는 방법이 있지 않을까요? :)

없나.. orz

제가 아는게 워낙 없어서..

일단 일반적인 File 객체엔 지원되는 메서드가 없는것 같습니다.. api를 뒤져도 안나오더라구요.

그리고 RandomAccessFile 객체도 임이의 위치에가서 읽기, 쓰기는 가능한데 마찬가지 뒤에서 부터 읽긴 api에 안나오구요..ㅠㅠ

혹시 다른 스트림에 필터링해서 뒤에서부터 읽기가 가능한 방법이 있나요?

creativeidler의 이미지

file size - 1k byte 정도 skip을 한 다음 거기서부터 readLine을 하고 첫 readLine을 무시하면 라인 단위로 뒷 부분 1k byte 정도는 나오겠죠.

atie의 이미지

RandomAccessFile의 length를 구해서 1K byte[] buffer에 파일의 끝 부분을 적절히 readFully를 써서 넣고, 그 버퍼를 꺼꾸로 읽어 나가면서 new Line이 있는지를 검사해서 라인 카운트로 break하는 Loop에서 파일의 seek position을 찾으면 될 듯 합니다.

----
I paint objects as I think them, not as I see them.
atie's minipage

bugiii의 이미지

뒷부분을 읽어 오는 것은 파일의 길이와 읽어 오는 위치를 정할 수 있을 테니까 구현하면 될 것 같습니다.

그런데, 파일의 내용이 바뀐다면 (길이가 길어지거나 삭제되거나 하는) 그것을 tail 이 어떻게 감지하느냐가 더 중요할 것 같습니다. 기존의 tail 이 쓰는 몇가지 전략을 참조해서 java 에 대응시키는 것이 좋을 듯 합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.