Copying and moving directories

Chris via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Feb 17 03:00:30 PST 2017


On Thursday, 16 February 2017 at 17:06:30 UTC, Jonathan M Davis 
wrote:
>
> Well, there's zero difference between renaming the file or 
> directory and moving it. It's simply a difference in name. 
> rename actually comes from POSIX, where rename is used in C 
> code, and mv is used in the shell. So, I guess that you can 
> blame POSIX. But there really isn't any reason to have a mv or 
> move function in addition to rename.

`mv` or `move` would be more intuitive. I actually looked for 
names similar to the operations available in the shell (cp/copy, 
mv/move). It took me a few minutes to realize I had to use 
`rename` (which is poorly documented). But it is 
counter-intuitive. When you use a GUI, `rename` doesn't change 
the location. `rename` is a bit "techy", you have to go "wait a 
minute, when you think about it, rename should do the same". But 
that's not good enough for a library function. One of D's slogans 
is `simple things should be simple`, so moving a file should be 
`move(dir, toDir)`. Seriously, you don't want to spend much time 
on stuff like that.

> If you want mv instead, just alias rename to mv.
>
> However, I would point out that rename has the problem (at 
> least on *nix - not sure about Windows) that it can't move 
> across filesystem boundaries. I think that at some point, an 
> alternative which did work across filesystem boundaries was 
> proposed, and that may have been called move. It's not 
> currently in Phobos though.
>
> - Jonathan M Davis

That is actually a bit of a problem. First, I might want to store 
backup files on a different device. Second, loads of applications 
need this nowadays to interact with MP3 players, ebook readers 
etc.


More information about the Digitalmars-d-learn mailing list