zoukankan      html  css  js  c++  java
  • rename_windows.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)
    }

  • 相关阅读:
    基于.net 4.0框架的Cipher演示程序
    文件校验 加解密
    Base64加解密
    RSA加解密
    UBT框架加解密工具项目 UBT.Framework.Encryption
    AESTest
    message-digest algorithm 5
    Aforge.net
    Winform非UI线程更新UI界面的各种方法小结
    Hadoop-2.6.5安装
  • 原文地址:https://www.cnblogs.com/zhangboyu/p/7457363.html
Copyright © 2011-2022 走看看