I have a simple problem, I want to open a file and read data from it. When the file changes, i will read more data. The trouble is i only want to open the file once.

Here's the simplified code:

import core.thread;
import std.stdio;

void main(string[] args)
{
        auto file = File("file.txt", "r");

        string line;

        writeln("First Read:");

        while ((line = file.readln()) !is null)
        {
                write(line);
        }

Thread.sleep(dur!("seconds")(5)); // <-- More data is appended to the file while waiting here.

        writeln("Second Read:");

while ((line = file.readln()) !is null) // <-- Error! New data is not read!
        {
                write(line);
        }
}

I read the file, then when its paused, i add new lines to the opened file. When the program resumes it totally ignores the new lines. doh!

I guess this is the result of buffering somewhere so i've tried all sorts to try and escape this behaviour, including:

file.clearerr()
file.seek()
file.flush()

Nothing seems to work. What am i missing? It must be something simple. Any ideas?

Reply via email to