【问题标题】:Overwrite original file by other with modifications用其他修改覆盖原始文件
【发布时间】:2017-10-03 01:20:27
【问题描述】:

我有一个原始文件students.txt。我想用文件studentsmodified.txt 覆盖。我尝试使用重命名,但似乎重命名不能覆盖文件:

rename("studentsmodified.txt","students.txt");

我该怎么做?

【问题讨论】:

  • 检查 errno 以了解失败的原因 - 可能是权限问题,或文件打开。
  • 文件存在提示错误
  • 它应该适用于任何表现良好的操作系统,例如Linux。您是否可能尝试在非 POSIX 操作系统上执行此操作,例如Windows ?
  • 好的 - 我现在已将您的问题标记为 windows - 您可能应该为将来的任何问题执行此操作,因为 Windows 与标准操作系统有许多不兼容之处。请参阅MSDN entry for rename(),尤其是说“新名称不能是现有文件或目录的名称”的部分。在调用 rename() 之前,您可能必须删除或重命名要替换的文件。
  • 我不知道 - 如果可以避免的话,我不会使用 Windows。也许您可以阅读一下 MSDN 文档,或者只是使用我上面提到的解决方法。

标签: c windows file


【解决方案1】:

使用removerename的便携版:

#include <stdio.h>

...

remove("students.txt");
rename("studentsmodified.txt","students.txt");

使用MoveFileEx function的Windows特定版本:

#include <Windows.h>

...

MoveFileEx("studentsmodified.txt","students.txt",MOVEFILE_REPLACE_EXISTING);

【讨论】:

    猜你喜欢
    • 2020-01-16
    • 2014-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2021-12-13
    • 2018-10-20
    • 1970-01-01
    相关资源
    最近更新 更多