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");

}
// -----------------------

Reply via email to