On Tuesday, 12 December 2017 at 02:15:13 UTC, codephantom wrote:
just playing around with this....
also...in case you only want to read n bytes.. // ----------------------- module test; import std.stdio, std.file, std.exception; import std.datetime.stopwatch; void main() { string filename = "test.txt"; // a text file //string filename = "test.exe"; // a binary file enforce(filename.exists, "Umm..that file does not exist!"); auto file = File(filename, "r"); ubyte[] buf; import std.datetime : MonoTime; auto t2 = MonoTime.currTime; // just read the first n bytes. int bytesToRead = 4; // change this n int bufCount; while ( !file.eof() && bufCount < bytesToRead ) { buf = file.rawRead(new ubyte[1]); if(!file.eof()) { process(cast(char)(buf[0])); bufCount++; } } writeln("-------------------------------------"); writeln("this took : ", MonoTime.currTime - t2); writeln("-------------------------------------"); writeln(); return; } void process(char someChar) { import std.ascii : isPrintable; if( isPrintable(someChar) ) writeln("found a printable character: ", someChar); else writeln("found a non printable character"); } // -----------------------