C 如何用其他文件替换文件?

C 如何用其他文件替换文件?,c,file-io,C,File Io,我正在编写一个简单的加密程序,它接受任何给定的文件,将加密数据写入一个临时文件,我现在正在寻找最有效的方法,用加密的副本替换原始文件 我知道我可以用w打开原始文件,然后逐行复制加密文件,但我想知道是否有更有效的方法,比如覆盖原始文件的硬链接指向加密文件,而不必重写整个文件 正如@Chris Turner所建议并由@Jabberwocky解释的那样,在linux上使用rename可以很好地工作,您可以使用mv 如果这两个文件不在同一个目录中,mv将是更好的选择,因为有几个原因,包括可以为mv提供一

我正在编写一个简单的加密程序,它接受任何给定的文件,将加密数据写入一个临时文件,我现在正在寻找最有效的方法,用加密的副本替换原始文件


我知道我可以用w打开原始文件,然后逐行复制加密文件,但我想知道是否有更有效的方法,比如覆盖原始文件的硬链接指向加密文件,而不必重写整个文件

正如@Chris Turner所建议并由@Jabberwocky解释的那样,在linux上使用rename可以很好地工作

,您可以使用
mv

如果这两个文件不在同一个目录中,
mv
将是更好的选择,因为有几个原因,包括可以为
mv
提供一个选项,以便在文件被覆盖时没有提示输出,即

mv -f tempfile original_newfile
结果将是
tempfile
不再存在,并且原始文件现在包含具有原始名称的tempfile


注意:
mv
操纵“硬链接”来完成其工作

使用
rename()
的明显建议如何?如果您在linux上,并且您的两个文件位于同一个挂载的文件系统上,那么只需使用“rename”。我想指出的是,将临时文件和最终文件放在同一个目录下会让您省去一些麻烦,因为这两个文件将位于同一个文件系统上,在这种情况下,重命名将起“原子”作用。(你不应该让你的文件拷贝在中间被剪掉,结果是一个目标文件不好)。所以重命名TMP文件会覆盖原来的文件吗?@ BaloRe如何读取文档?假设你想加密文件FO。伪代码:1。在encrypring时将FOO复制到TEMP。2.福。3.临时工。