C++判断文件是否被占用

1.代码

复制代码
#include <windows.h>
#include <iostream>

bool IsFileInUse(const std::wstring& filePath) {
    HANDLE hFile = CreateFileW(
        filePath.c_str(),
        GENERIC_READ,
        0,  // 不允许其他进程共享
        NULL,
        OPEN_EXISTING,
        FILE_ATTRIBUTE_NORMAL,
        NULL
    );

    if (hFile == INVALID_HANDLE_VALUE) {
        DWORD dwError = GetLastError();
        if (dwError == ERROR_SHARING_VIOLATION) {
            return true;  // 文件被占用
        }
        return false;  // 文件不存在或其他错误
    }

    CloseHandle(hFile);
    return false;  // 文件未被占用
}

int main() {
    std::wstring filePath = L"C:\\path\\to\\your\\file.txt";
    if (IsFileInUse(filePath)) {
        std::wcout << L"File is in use." << std::endl;
    } else {
        std::wcout << L"File is not in use." << std::endl;
    }
    return 0;
}
复制代码

 

posted @   朱小勇  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
点击右上角即可分享
微信分享提示