2015-11-16 1 views
0

Мне нужно сделать IPC с другим приложением. Это приложение отправляет данные, и мое приложение Haxe получает. По какой-то причине мой выбор сужается до файловой системы.Haxe асинхронно считывает локальный файл?

Моя идея состоит в том, чтобы другое приложение продолжало обновлять файл, и мое приложение Haxe продолжает читать из этого файла. Проблема в том, что я продолжаю получать одинаковое значение, хотя файл данных меняется. Я предполагаю, что мне нужен асинхронный считыватель, чтобы получить обновленный файл, но что я должен использовать?

Вот мой код:

var tmpWaveRaw = sys.io.File.getContent("assets/wave.txt"); 
trace(tmpWaveRaw); //always stays the same when the app is running, but changes when the app restarts. 

Спасибо!

Update: Вот эксперимент, который я только что сделал:

  1. Есть мой код продолжает печать модифицирована время каждого 100мса файла.
  2. Позволяет другому приложению изменять файл и останавливаться.
  3. Запустите мое приложение. Теперь он печатает правильное измененное время и соответствует файлу stat моей ОС.
  4. Позвольте другому приложению снова изменить файл. Закрыть.
  5. Мое приложение все еще печатает старое модифицированное время, не соответствующее файлу stat моей ОС.
+0

Вы получаете содержимое файла каждый раз, когда она меняется? –

+0

@ JustoDelgado No. Я могу получить только то же значение, пока приложение работает, независимо от того, изменяется ли файл или нет. – Fenwick

ответ

0

Это должно работать, вам нужно прочитать еще раз файл после того, как она меняется:

var running = true; 
var last = sys.FileSystem.stat("test.txt"); 
while (running) { 
    var now = sys.FileSystem.stat("test.txt"); 
    if (last.mtime.getTime() != now.mtime.getTime()) { 
     last = now; 
     trace(sys.io.File.getContent("test.txt")); 
    } 
} 
+0

Странно, но mtimes тоже не меняется. – Fenwick

+0

Файл должен быть закрыт/сохранен другим приложением, чтобы содержимое файла было записано на диск, и вы можете получить изменения с помощью Haxe. –

+0

Я думаю, что содержимое файла сохраняется на диске, потому что я вижу Модифицированное время и другие изменения в браузере файлов моей ОС, даже когда другое приложение повторно открывает и перезаписывает файл. – Fenwick