我有一个用 C 开发的应用程序。这个应用程序支持跨多个平台。有一个功能是我们通过文件传输协议将文件传输到不同的机器或本地机器上的任何其他目录。我想包含一个功能,我可以用一些临时名称传输文件,一旦传输完成,我想用正确的名称(实际文件名)重命名文件。
我尝试使用简单的 rename() 函数。它在 Unix 和 Linux 机器上运行良好。但它不适用于 Windows。它给了我一个错误代码 13(权限被拒绝错误)。
首先,如果我必须授予文件某些权限等,我在 msdn 中签入以了解重命名的功能。
- 我授予了文件的完全权限(假设它是 777)。
- 我在其他几篇文章中读到我应该在重命名文件之前关闭文件描述符。我也这样做了。它仍然给出同样的错误。
- 很少有其他帖子提到文件的所有者和应用程序的所有者。该应用程序将以 SYSTEM 用户身份运行。(但这不应该影响行为,因为我在我的应用程序中尝试了相同的重命名函数,如下所示:
这在我的应用程序中运行良好:
rename("C:/abc/aaa.txt","C:/abc/zzz.txt");
但
rename(My_path,"C:/abc/zzz.txt");
不起作用,My_path
打印时显示在哪里C:/abc/test.txt
。
如何重命名文件?我需要它在多个平台上工作。还有什么其他的事情我应该努力让它发挥作用吗?