On 12/06/2012 07:52 AM, Suliman wrote:
I am trying to create simple app that would read user input and open
file with such name, but every time when I run it's crash with error
"std.file.FileException@std\file.d(294): \1.txt"
import std.stdio;
import std.string;
import std.file;
void main()
{
string getfilename()
{
auto name = readln();
writeln(name);
if (exists(name))
{
writeln("exist");
}
else
writeln("not exist");
return name;
}
void readfile(string name)
{
auto filearray = read(name);
writeln(name);
writeln(filearray);
}
readfile(getfilename());
}
The exception is thrown here:
version(Windows)
{
alias TypeTuple!(GENERIC_READ,
FILE_SHARE_READ, (SECURITY_ATTRIBUTES*).init,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN,
HANDLE.init)
defaults;
auto h = CreateFileW(std.utf.toUTF16z(name), defaults);
cenforce(h != INVALID_HANDLE_VALUE, name); // <-- HERE
It seems to be related to a Unicode encoding issue, possibly the
encoding that the console is using. (I am assuming that getfilename()
reads from the console.)
It could be about file access rights as well.
Ali