readText fails to open file
    Jonathan M Davis 
    jmdavisProg at gmx.com
       
    Sun Jun 17 01:35:46 PDT 2012
    
    
  
On Sunday, June 17, 2012 10:21:17 GreatEmerald wrote:
> This is kind of silly, and I probably missed something, but for
> some reason I can't get any kind of text file opened when using
> readText from std.file. This is what I'm trying to do:
> 
>    import std.stdio;
>    import std.file;
> 
>    int main(string[] args)
>    {
>        if (!isFile(args[0]))
>        {
>            writeln("Error: Input file does not exist or is not a
> valid file!");
>            return 1;
>        }
> 
>        auto LTFFile = chomp(readText(args[0]));
> 
>        readln();
>        return 0;
>    }
> 
> Nice and simple, right? So I execute it:
>    > ./LTF2LIP LTF2LIP.d
> 
>    std.utf.UTFException at std/utf.d(645): Invalid UTF-8 sequence (at
> index 1)
> 
> And I'm sure that the file is in UTF-8, with LF line endings,
> without a BOM. The same error is thrown when I try any other kind
> of files. So what gives?..
LOL. You're reading the wrong file. You have made the common mistake of 
thinking that args[0] was the first argument that you passed to your program. 
It's not. It's the name of your program. In this case, it would be 
"./LTF2LIP". It's args[1] which is "LTF2LIP.d".
Also, you need to check exists before you check isFile, otherwise isFile will 
blow up if the file doesn't exst. And both of those are properties, so you 
should be calling them like
auto filename = args[1];
if(!filename.exists || !filename.isFile)
    ...
The -property flag enforces this behavior, and it will eventually become the 
normal compiler behavior.
- Jonathan M Davis
    
    
More information about the Digitalmars-d-learn
mailing list