public class Test : Object { private char[] buffer; private const size_t LENGTH = 8192; private File file; private FileInputStream input_stream; private ssize_t bytes_read; public Test(File f) { this.file = f; this.buffer = new char[LENGTH]; } private async void read_contents () { print("start reading\n"); do { try { bytes_read = yield this.input_stream.read_async(this.buffer, 10, Priority.DEFAULT, null); } catch(Error e) { print("%s\n", e.message); } } while(bytes_read > 0); print("%s\n", (string)buffer); //Print buffer } public async void start() { try { this.input_stream = yield this.file.read_async(Priority.DEFAULT, null); } catch(Error err) { print("%s\n", err.message); return; } yield this.read_contents(); } public static int main() { File f = File.new_for_path("/home/qnull/downloader.vala"); var t = new Test(f); t.start(); new MainLoop(null, false).run(); return 0; } }