更改文件名

通过使用rename()函数,既可以重命名文件,有可以将文件移至同一文件系统中的另一目录。函数会将oldpath所表示的现有的一个路径名重命名为newpath参数所指定的路径名。

#include <stdio.h>
 int rename(const char *oldpath, const char *newpath);

rename()调用仅操作目录条目,而不移动文件数据,改名既不影响指向该文件的其他硬链接,也不影响持有该文件打开描述符的任何进程,因为这些文件描述符指向的是打开文件描述,与文件名无关。
如果newpath已经存在,则将其覆盖。如果newpath与oldpath指向同一文件,则不发生变化(且调用成功)。
如果oldpath指定文件,而非目录,那么就不能将newpath指定为一个目录的路径名(否则将errno置为EISDIR)。要想重命名一个文件到某一目录中(亦将文件移到另一个目录),newpath必须包含新的文件名。如下调用既将一个文件移动到另一个目录中,同时又将其改名:rename(“sub1/x”, “sub2/y”);。
如果oldpath指定为目录名,则意在重命名该目录。这种情况下,必须保证newpath要么不存在,要么是一个空目录的名称。否则将会出错。
如果oldpath是一目录,则newpath不能包含oldpath作为其目录前缀。例如,不能将/home/1000phone重命名为/home/1000phone/work。

猜你喜欢

转载自blog.csdn.net/anton_99/article/details/98477759