Go踩坑之Go语言os.stat()方法的调用路径问题

文章目录

  • 问题描述
  • 代码
  • 问题重点
  • 结果

问题描述

首先,好久没发博客了…
然后介绍一下os.stat(文件路径)这个方法
这个方法可以获取文件的描述,描述信息如下:

/*
	FileInfo:文件信息
		interface
			Name(),文件名
			Size(),文件大小,字节为单位
			IsDir(),是否是目录
			ModTime(),修改时间
			Mode(),权限

*/

然后呢,os.stat()的使用也很简单,它可以返回上诉的FileInfo
但是呢,智障博主在不同的包下定义了这个方法,发现传入相同的文件名,有的包可以使用有的包不可以使用,博主蒙B了,遂记录
项目结构如下
Go踩坑之Go语言os.stat()方法的调用路径问题_第1张图片

代码

fileInfo.go

package fileOps

import (
	"fmt"
	"os"
)

/*
	FileInfo:文件信息
		interface
			Name(),文件名
			Size(),文件大小,字节为单位
			IsDir(),是否是目录
			ModTime(),修改时间
			Mode(),权限

*/
// 定义一个查看文件的的函数
func GetFileInfo(fileName string)  {
	fileInfo,err :=  os.Stat(fileName)
	if err != nil{
		fmt.Println("err :",err)
		return
	}
	fmt.Printf("%T\n",fileInfo)
	//文件名
	fmt.Println(fileInfo.Name())
	//文件大小
	fmt.Println(fileInfo.Size())
	//是否是目录
	fmt.Println(fileInfo.IsDir()) //IsDirectory
	//修改时间
	fmt.Println(fileInfo.ModTime())
	//权限
	fmt.Println(fileInfo.Mode()) //-rw-r--r--
}

然后在main里面进行调用

package main

import (
	fileOps "byteDancer.com/wcp-step-2/testPaacket/文件操作"
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"os"
)
func main() {
	// 我的天...以当前调用的路径作为路径
	fileOps.GetFileInfo("aa.txt")
	// 报错...
	// fileOps.GetFileInfo("../aa.txt")
	fileOps.GetFileInfo("./文件操作/bb.txt")
}

问题重点

注意
这里通过main调用,但是方式声明在其他目录下,我们传入的路径要以main为住,而不是声明方法的目录为主
也就是说我们只关心当下,而不用关心哪里定义的方法
// 我的天…以当前调用的路径作为路径

fileOps.GetFileInfo("aa.txt")
// 报错...
// fileOps.GetFileInfo("../aa.txt")

这是基于main文件下进行调用的

结果

实验结果如下:
Go踩坑之Go语言os.stat()方法的调用路径问题_第2张图片

你可能感兴趣的:(Go语言萌新)