zoukankan      html  css  js  c++  java
  • rename.go

    package nsqd

    import (
        "syscall"
        "unsafe"
    )

    var (
        modkernel32     = syscall.NewLazyDLL("kernel32.dll")
        procMoveFileExW = modkernel32.NewProc("MoveFileExW")
    )

    const (
        MOVEFILE_REPLACE_EXISTING = 1
    )

    func moveFileEx(sourceFile, targetFile *uint16, flags uint32) error {
        ret, _, err := procMoveFileExW.Call(uintptr(unsafe.Pointer(sourceFile)), uintptr(unsafe.Pointer(targetFile)), uintptr(flags))
        if ret == 0 {
            if err != nil {
                return err
            }
            return syscall.EINVAL
        }
        return nil
    }

    func atomicRename(sourceFile, targetFile string) error {
        lpReplacedFileName, err := syscall.UTF16PtrFromString(targetFile)
        if err != nil {
            return err
        }

        lpReplacementFileName, err := syscall.UTF16PtrFromString(sourceFile)
        if err != nil {
            return err
        }

        return moveFileEx(lpReplacementFileName, lpReplacedFileName, MOVEFILE_REPLACE_EXISTING)
    }

  • 相关阅读:
    1740-约数之和
    1653-南邮的面积
    1880-A. 偷吃可耻
    1429-全排列的输出
    1342-皇后控制问题
    1340-逆矩阵问题
    1319-n皇后问题
    1221-最少硬币问题
    1219-整数因子分解问题
    linux 命令小结
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7457361.html
Copyright © 2011-2022 走看看