新しい宛先へのハードリンクを作成してみることができます。それが失敗した場合、それは失敗します。成功した場合は、元のファイルを削除します。これがLinux(g ++ 8.3.1およびclang ++ 7.0.1)およびWindows(VS2019)のファイル(ディレクトリではない)で機能することを確認し、他のほとんどの最新のOSでも機能することを期待しています。C ++ 17(またはboost
古いコンパイラの場合)が必要です。
#include <filesystem>
#include <iostream>
#include <string_view>
#include <vector>
bool my_rename(const std::string_view from, const std::string_view to,
std::error_code& ec)
{
// create hard link
std::filesystem::create_hard_link(from, to, ec);
if(ec) return false; // it failed
// remove the original
return std::filesystem::remove(from, ec);
}
int cppmain(const std::string_view program, std::vector<std::string_view> args) {
if(args.size() != 2) {
std::cerr << "USAGE: " << program << " <source> <target>\n";
return 1;
}
std::error_code ec;
if(my_rename(args[0], args[1], ec) == false) {
std::cerr << program << ": " << ec << "\n";
return 1;
}
return 0;
}
int main(int argc, char* argv[]) {
return cppmain(argv[0], {argv + 1, argv + argc});
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加