Go踩坑之Go語言os.stat()方法的調用路徑問題

問題描述

首先,好久沒發博客了…
然後介紹一下os.stat(文件路徑)這個方法
這個方法可以獲取文件的描述,描述信息如下:

/*
	FileInfo:文件信息
		interface
			Name(),文件名
			Size(),文件大小,字節爲單位
			IsDir(),是否是目錄
			ModTime(),修改時間
			Mode(),權限

*/

然後呢,os.stat()的使用也很簡單,它可以返回上訴的FileInfo
但是呢,智障博主在不同的包下定義了這個方法,發現傳入相同的文件名,有的包可以使用有的包不可以使用,博主蒙B了,遂記錄
項目結構如下
在這裏插入圖片描述

代碼

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文件下進行調用的

結果

實驗結果如下:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章