物理の駅 by onsanai

Physics Station → PhSt 質問・疑問・間違いの指摘は、コメントに書くか、直接伝えるときっと良いことがあります。主にWindows or Ubuntu用の記事です

Visual Studio 2019 16.6でファイルシステムReFS上のstd::filesystem::removeが正しく動くようになった

Visual Studio 2019 プレビュー版の16.6が3月16日に公開されていたので、先日報告した件が修正されているか試した。

phst.hateblo.jp

docs.microsoft.com

#include <filesystem>
#include <iostream>
#include <fstream>
#include <stdio.h>

int main(int argc, char** argv) {
    std::error_code ec;
    std::ofstream ofs1(std::string(argv[1]) + "/a.tmp");
    ofs1.close();
    std::cout << ec.value() << " " << ec.message() << std::endl;

    std::filesystem::remove(std::string(argv[1]) + "/a.tmp", ec);
    std::cout << ec.value() << " " << ec.message() << std::endl;

    std::ofstream ofs2(std::string(argv[1]) + "/a.tmp");
    ofs2.close();
    std::cout << ec.value() << " " << ec.message() << std::endl;

    std::filesystem::rename(std::string(argv[1]) + "/a.tmp", std::string(argv[1]) + "/b.tmp", ec);
    std::cout << ec.value() << " " << ec.message() << std::endl;

    remove((std::string(argv[1]) + "/b.tmp").c_str());
    std::cout << ec.value() << " " << ec.message() << std::endl;
    return 0;
}

HドライブのファイルシステムはReFSである。

16.6でコンパイルしたとき

PS C:\Users\Administrator\Desktop> .\VSTest.exe H:
0 この操作を正しく終了しました。
0 この操作を正しく終了しました。
0 この操作を正しく終了しました。
0 この操作を正しく終了しました。
0 この操作を正しく終了しました。

16.5でコンパイルしたとき

PS C:\Users\Administrator\Desktop> .\VSTest.exe H:
0 この操作を正しく終了しました。
50 この要求はサポートされていません。
50 この要求はサポートされていません。
0 この操作を正しく終了しました。
0 この操作を正しく終了しました。

正しく修正されている。正式リリースが待ち遠しい。