2016-05-03 9 views
5

Я пытаюсь написать приложение чата в Rebol, которое основано на одном текстовом файле. Что было бы лучшим способом прочитать этот файл в режиме реального времени? Прямо сейчас я получил это работает с этим:Как читать файл в реальном времени для приложения чата?

t1: text 600x300 wrap green black font-name font-fixed rate 1 feel[ 
    engage: func [face action event][ 
     if action = 'time [ 
      face/text: read chatText 
      show face 
     ] 
    ] 
] 

В текстовом поле обновляется каждый второй с содержимым файла. Это работает даже с несколькими пользователями, но весь файл читается каждую секунду для каждого пользователя. Есть ли лучший способ сделать это?

+1

Почему бы просто не проверить, не изменился ли файл перед его чтением? –

ответ

2

Посмотрите на info? функция. Вы можете сделать что-то вроде этого:

REBOL [] 
chat-file: %file.txt 
file-info: info? chat-file 
update-date: file-info/date 

view layout [ 
    t1: text read chat-file 600x300 wrap green black font-name font-fixed rate 1 feel [ 
     engage: func [face action event] [ 
      if all [ 
       action = 'time 
       file-info: info? chat-file 
       update-date < file-info/date 
      ] [ 
       update-date: file-info/date 
       face/text: read chat-file 
       show face 
      ] 
     ] 
    ] 
] 

Но вы должны быть осторожны, если вы будете записывать в файл из нескольких приложений.