Golang实现Windows路径参数化

Golang实现路径参数化

前言

在许多项目中,需要导入一些文件、本地图片等,在使用的时候,会使用其路径。将路径参数化会使得代码更加灵活有效。

Windows路径分析

  • 目录分隔符:\(默认情况下)

路径获取

以一个小例子为例,还是linux_cmd.json文件,我放在了db文件夹下:
在这里插入图片描述
针对当前目录下,想要在项目被移动的情况下,依旧能够获得文件的路径,可以使用filepath.Abs()方法:使用相对路径得到对应的绝对路径
代码如下:

package main

import (
	"fmt"
	"path/filepath"
)

func main()  {
	// 获取文件的相对路径
	fileName := ".\\db\\linux_cmd.json"
	// 获取文件的绝对路径
	path, err:= filepath.Abs(fileName)
	if err != nil {
		fmt.Println("file path error: " + err.Error())
		return
	}
	fmt.Println(path)
}

控制台输出:

D:\amf\db\linux_cmd.json

其实此处直接用相对路径就可以了,filepath包提供了很多的方法,还需要多研究研究,我个人还是比较习惯这样使用绝对路径。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Golang的标准库中的`os`和`filepath`包来实现Windows文件监控。具体步骤如下: 1. 使用`os.Stat()`函数获取待监控文件的信息,包括文件名、路径、大小、修改时间等。 2. 使用`os.Open()`函数打开待监控文件。 3. 使用`os.File`对象的`Stat()`函数获取文件的当前信息,包括大小和修改时间。 4. 使用`os.File`对象的`Seek()`函数将文件指针移到文件末尾。 5. 使用`os.File`对象的`Read()`函数读取文件末尾的数据,如果读到数据,则表示文件有更新。 6. 如果文件有更新,则可以执行相应的操作,如打印文件更新信息等。 下面是一个简单的示例代码: ``` package main import ( "fmt" "os" "path/filepath" "time" ) func main() { filename := "test.txt" path, err := filepath.Abs(filename) if err != nil { fmt.Println(err) return } fi, err := os.Stat(path) if err != nil { fmt.Println(err) return } for { time.Sleep(time.Second) // 每秒检查一次文件更新 currFi, err := os.Stat(path) if err != nil { fmt.Println(err) continue } if currFi.Size() != fi.Size() || currFi.ModTime() != fi.ModTime() { fi = currFi fmt.Printf("File %s has been updated!\n", filename) // 可以在这里执行相应的操作 } } } ``` 在上面的示例中,程序会每秒检查一次文件是否有更新,如果文件有更新,则打印相应的信息。在实际应用中,可以根据具体需求执行相应的操作,如发送邮件、上传文件等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值