Why file.exists of relative path on Linux always return false?
Alex Parrill via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Feb 29 06:58:46 PST 2016
On Monday, 29 February 2016 at 14:50:51 UTC, Suliman wrote:
> I am trying to check relative path on Linux for exists.
>
> import std.stdio;
> import std.path;
> import std.file;
> import std.string;
>
>
>
> string mypath = "~/Documents/imgs";
>
> void main()
> {
> if(!mypath.exists)
> {
> writeln(mypath, " do not exists");
> }
>
> if(!mypath.exists)
> {
> writeln(mypath, " do not exists");
> }
>
> if("/home/dima/Documents/imgs".exists)
> {
> writeln("/home/dima/Documents/imgs");
> writeln("Dir exists");
> }
>
> }
>
> ~/Documents/imgs always return "do not exists". But full path:
> "/home/dima/Documents/imgs" is "Dir exists".
>
> Why? It's same paths!
~ is expanded by your shell. It is not a relative path, and
system calls do not recognize it (same with environmental
variables).
See also
http://stackoverflow.com/questions/3616595/why-mkdir-fails-to-work-with-tilde
More information about the Digitalmars-d-learn
mailing list