golang跨平台文件目录隐藏与显示插件库higgs的使用

golang跨平台文件目录隐藏与显示插件库higgs的使用

higgs是一个轻量级的跨平台Go库,用于隐藏或显示文件和目录。

支持的操作系统:所有基于Unix的系统(已在Ubuntu、MacOS上测试),Windows

安装

$ go get github.com/dastoori/higgs

使用示例

下面是一个完整的示例demo,展示如何使用higgs库来隐藏和显示文件:

package main

import (
	"fmt"
	"github.com/dastoori/higgs"
)

func main() {
	path := "foo.txt"

	// 隐藏文件
	newPath, err := higgs.Hide(path)
	// 注意:在Unix系统上,隐藏文件后文件名会改为`.foo.txt`,
	// newPath变量包含新的文件名

	if err != nil {
		fmt.Println(err)
	}

	// 显示文件
	newPath, err = higgs.Unhide(newPath)
	
	if err != nil {
		fmt.Println(err)
	}

	// 设置Unix覆盖选项(默认禁用)
	fh := NewFileHide(".bar.txt", UnixOverwriteOption(true))

	// 注意:在Unix系统上,如果存在`bar.txt`文件,
	// 在显示`.bar.txt`时会覆盖它
	err := fh.Unhide()
	
	if err != nil {
		fmt.Println(err)
	}

	// 注意:`fh.Path`包含新的文件名
}

功能说明

  1. higgs.Hide(path) - 隐藏指定路径的文件或目录

    • 在Unix系统上,会在文件名前添加点号(.)
    • 返回新的文件路径和可能的错误
  2. higgs.Unhide(path) - 显示指定路径的文件或目录

    • 在Unix系统上,会移除文件名前的点号(.)
    • 返回新的文件路径和可能的错误
  3. NewFileHide - 创建文件隐藏对象

    • 可以设置选项,如UnixOverwriteOption(true)启用Unix覆盖模式

注意事项

  • 在Unix系统上操作会修改文件名
  • 默认情况下不会覆盖已存在的文件
  • 可以通过选项启用覆盖模式

许可证

MIT


更多关于golang跨平台文件目录隐藏与显示插件库higgs的使用的实战教程也可以访问 https://www.itying.com/category-94-b0.html

1 回复

更多关于golang跨平台文件目录隐藏与显示插件库higgs的使用的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


使用Higgs库实现Golang跨平台文件目录隐藏与显示

Higgs是一个用于在跨平台环境中隐藏和显示文件/目录的Golang库。它支持Windows、Linux和macOS系统,提供了一致的API来管理文件和目录的可见性。

安装Higgs

首先,使用go get命令安装Higgs库:

go get github.com/redcode-labs/higgs

基本用法

1. 隐藏文件/目录

package main

import (
	"fmt"
	"log"
	"github.com/redcode-labs/higgs"
)

func main() {
	// 要隐藏的文件/目录路径
	path := "/path/to/your/file_or_directory"

	// 创建Higgs实例
	h := higgs.New()

	// 隐藏文件/目录
	err := h.Hide(path)
	if err != nil {
		log.Fatalf("隐藏失败: %v", err)
	}

	fmt.Printf("成功隐藏: %s\n", path)
}

2. 显示文件/目录

package main

import (
	"fmt"
	"log"
	"github.com/redcode-labs/higgs"
)

func main() {
	path := "/path/to/your/hidden_file_or_directory"

	h := higgs.New()

	// 显示文件/目录
	err := h.Show(path)
	if err != nil {
		log.Fatalf("显示失败: %v", err)
	}

	fmt.Printf("成功显示: %s\n", path)
}

3. 检查文件/目录是否隐藏

package main

import (
	"fmt"
	"log"
	"github.com/redcode-labs/higgs"
)

func main() {
	path := "/path/to/check"

	h := higgs.New()

	// 检查隐藏状态
	hidden, err := h.IsHidden(path)
	if err != nil {
		log.Fatalf("检查失败: %v", err)
	}

	if hidden {
		fmt.Printf("%s 是隐藏的\n", path)
	} else {
		fmt.Printf("%s 是可见的\n", path)
	}
}

高级用法

1. 批量处理多个文件/目录

package main

import (
	"fmt"
	"log"
	"github.com/redcode-labs/higgs"
)

func main() {
	paths := []string{
		"/path/to/file1",
		"/path/to/dir1",
		"/path/to/file2",
	}

	h := higgs.New()

	for _, path := range paths {
		err := h.Hide(path)
		if err != nil {
			log.Printf("无法隐藏 %s: %v", path, err)
			continue
		}
		fmt.Printf("成功隐藏: %s\n", path)
	}
}

2. 递归隐藏目录及其内容

package main

import (
	"fmt"
	"log"
	"os"
	"path/filepath"
	"github.com/redcode-labs/higgs"
)

func hideRecursively(h *higgs.Higgs, root string) error {
	return filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
		if err != nil {
			return err
		}
		if err := h.Hide(path); err != nil {
			return err
		}
		fmt.Printf("隐藏: %s\n", path)
		return nil
	})
}

func main() {
	dirPath := "/path/to/directory"

	h := higgs.New()

	if err := hideRecursively(h, dirPath); err != nil {
		log.Fatalf("递归隐藏失败: %v", err)
	}

	fmt.Println("目录及其内容已全部隐藏")
}

平台特定说明

  1. Windows:

    • 通过设置文件属性为FILE_ATTRIBUTE_HIDDEN实现隐藏
    • 需要管理员权限才能隐藏某些系统文件
  2. Linux/macOS:

    • 通过在文件名前添加点(.)实现隐藏
    • 这是Unix-like系统的传统隐藏方式

注意事项

  1. 在某些系统上,隐藏文件/目录可能需要管理员/root权限
  2. 隐藏不等于安全 - 用户仍然可以通过特定设置查看隐藏文件
  3. 在Linux/macOS上,Higgs会重命名文件以添加/删除前导点
  4. 操作前建议检查文件/目录是否存在,避免错误

错误处理

Higgs返回的错误可以用于判断操作失败的原因:

package main

import (
	"fmt"
	"log"
	"os"
	"github.com/redcode-labs/higgs"
)

func main() {
	path := "/nonexistent/path"
	h := higgs.New()

	err := h.Hide(path)
	if err != nil {
		if os.IsNotExist(err) {
			log.Printf("文件/目录不存在: %s", path)
		} else {
			log.Printf("隐藏失败: %v", err)
		}
		return
	}

	fmt.Printf("成功隐藏: %s\n", path)
}

Higgs库为Golang开发者提供了一个简单统一的API来处理跨平台的文件/目录隐藏需求,使得开发者无需关心不同操作系统下的实现细节。

回到顶部