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)
    }

  • 相关阅读:
    docker的安装
    Linux的常用命令
    HTTP协议,HTTPS协议,Websocket协议
    常用排序
    go的数组,切片,map
    if-else,switch,for循环
    go的函数,包以及mode的补充
    Android学习笔记——从源码看Handler的处理机制
    ElementUI
    关于IO的理解
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7457361.html
Copyright © 2011-2022 走看看