如何在Windows / Mac / Linux中创建隐藏文件?

史蒂夫:

我构建一个控制台应用程序,需要创建一些隐藏文件。同样,我知道以点开头的文件名将在Linux和Mac中隐藏,但是Windows?

设置文件属性?

有没有办法在Windows / Linux / Mac中创建隐藏文件和目录?

peterSO:

视窗:

SetFileAttributesW函数

设置文件或目录的属性。

FILE_ATTRIBUTE_HIDDEN 2 (0x2)

文件或目录被隐藏。它不包含在普通目录列表中。


走:

软件包syscall

func SetFileAttributes

func SetFileAttributes(name *uint16, attrs uint32) (err error)

从Go UTF-8编码的字符串(string)转换为Windows UTF-16编码的字符串指针(*uint16)。

软件包syscall

func UTF16PtrFromString

func UTF16PtrFromString(s string) (*uint16, error)

UTF16PtrFromString返回指向UTF-8字符串的UTF-16编码的指针,并添加了终止NUL。如果s在任何位置包含NUL字节,则返回(nil,EINVAL)。


使用操作系统构建约束


例如,

hide/attrib.go

package main

import (
    "fmt"
    "io/ioutil"
    "os"
)

func main() {
    filename := `test.hidden.file`
    os.Remove(filename)
    os.Remove("." + filename)
    err := ioutil.WriteFile(filename, []byte(filename), 0666)
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
        return
    }
    err = HideFile(filename)
    if err != nil {
        fmt.Fprintln(os.Stderr, err)
        return
    }
    fmt.Println("hidden:", filename)
}

hide/hide.go

// +build !windows

package main

import (
    "os"
    "path/filepath"
    "strings"
)

func HideFile(filename string) error {
    if !strings.HasPrefix(filepath.Base(filename), ".") {
        err := os.Rename(filename, "."+filename)
        if err != nil {
            return err
        }
    }
    return nil
}

hide/hide_windows.go

// +build windows

package main

import (
    "syscall"
)

func HideFile(filename string) error {
    filenameW, err := syscall.UTF16PtrFromString(filename)
    if err != nil {
        return err
    }
    err = syscall.SetFileAttributes(filenameW, syscall.FILE_ATTRIBUTE_HIDDEN)
    if err != nil {
        return err
    }
    return nil
}

输出(Linux):

$ tree hide
hide
├── attrib.go
├── hide.go
└── hide_windows.go
$

$ go build && ./hide
hidden: test.hidden.file
$ ls -a .test.hidden.file
.test.hidden.file
$ 

输出(Windows):

>go build && hide
hidden: test.hidden.file
>attrib test.hidden.file
A   H        \test.hidden.file
>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Linux,Mac和Windows上从Java启动.NET应用程序?

如何在Linux上而不是Mac / windows上的编译中排除go库?

如何在Windows上隐藏文件?

如何在Windows远程桌面RDC中从Mac剪切和粘贴到Windows

如何在python distutils中包含隐藏文件?

Mac OS中zip中的__MACOSX隐藏文件夹里面有什么

如何在Visual Studio for Mac中显示隐藏文件?

如何在Linux中chmod和chown隐藏文件?

如何在Mac OS X 10.9 Mavericks上的Finder上显示/隐藏隐藏文件?

从Windows Samba共享NTFS驱动器共享中将隐藏文件显示为Windows中的隐藏文件

如何在ls模式匹配中包含隐藏文件?

如何在Mac中创建批处理文件?

如何在Mac OSX上的Chrome中迭代Windows

如何在Linux上的Java应用程序的“打开文件”对话框中显示隐藏文件(。*)?

如何在Windows中深深隐藏文件/文件夹

如何在Windows 10中使用密码保护和隐藏文件夹内容?

在Windows中按需显示和隐藏隐藏文件

如何在Linux中显示以某个字母开头的隐藏文件?

如何在Android SD卡中创建隐藏文件夹并将内容推送到其中

如何在终端中仅显示隐藏文件?

如何在Windows中像Mac sudo权限一样在Windows中进行git pull?

如何在Android应用程序中创建隐藏文件夹?

如何在Linux中检测特殊的隐藏文件(例如.reiser_priv)?

如何在单个调用中同时获取隐藏文件和非隐藏文件

如何始终在Powershell中显示隐藏文件

如何从Linux或Mac创建Windows 7安装USB?

如何在Atom中隐藏文件

如何使用定位在终端中查找隐藏文件?

Linux内核如何处理隐藏文件?

TOP 榜单

热门标签

归档