Golang程序 检查一个文件是目录还是文件
在Go中,目录是一种特殊的文件类型,可以容纳其他文件和目录。目录用于组织文件系统中的文件,并为文件系统提供一个结构。Go在os包中提供了几个处理目录的函数,包括:os.mkdir、os.remove、os.open等。
语法
func Stat(name string) (fi FileInfo, err error)
Stat()函数存在于os包中,用于检查一个特定目录的状态。该函数接受一个字符串参数name,它代表目录的路径。它返回一个FileInfo结构,fi,和一个错误,err。
算法
- 第1步 – 首先,我们需要导入fmt和os包。
-
第2步 – 然后启动main()函数。在main中初始化一个名为file的变量,并在其中存储文件或目录的扩展名。
-
第3步 – 现在,通过IsDir()方法检查所提供的路径是否是文件或目录。如果该路径是一个目录,则打印它是一个目录。
-
第4步 – 否则,打印该路径是一个文件。
例子1
在这个例子中,我们将使用os包中的isDir()函数。程序将根据用户提供的路径是否指向文件,将结果显示为一个目录或文件。
package main
import (
"fmt"
"os"
)
func main() {
// providing the path of the file
file := "C:/Users/LENOVO/Desktop/go"
info, err := os.Stat(file)
if err != nil {
fmt.Println(err)
return
}
if info.IsDir() {
fmt.Println("It is a directory")
} else {
fmt.Println("It is a file")
}
}
输出
It is a directory
例2
在这个例子中,我们将使用os包中的Lstat()方法来查找用户提供的文件是一个文件还是一个目录。
package main
import (
"fmt"
"os"
)
func main() {
// giving the extension of the file
file := "C:/Users/LENOVO/Desktop/go/newFile.txt"
fileInfo, err := os.Lstat(file)
if err != nil {
fmt.Println(err)
return
}
mode := fileInfo.Mode()
if mode.IsDir() {
fmt.Println("It is a directory")
} else if mode.IsRegular() {
fmt.Println("It is a regular file")
} else {
fmt.Println("It is something else")
}
}
输出
It is a regular file
例3
在这个例子中,我们将使用OS包中的STAT()方法,以查找用户提供的文件是一个文件还是一个目录。
package main
import (
"fmt"
"os"
)
func main() {
// ENTER THE EXTENSION OF THE FILE OR DIRECTORY
file := "C:/Users/LENOVO/Desktop/go/new.go"
fileInfo, err := os.Stat(file)
if err != nil {
fmt.Println(err)
return
}
if fileInfo.Mode().IsDir() {
fmt.Println("It is a directory")
} else {
fmt.Println("It is a file")
}
}
输出
It is a file
例4
在这个例子中,我们将使用isRegular()方法来确定用户提供的文件是一个文件还是一个目录。
package main
import (
"fmt"
"os"
)
func main() {
// Replace this with the path to your file
file := "C:/Users/LENOVO/Desktop/go"
fileInfo, err := os.Stat(file)
if err != nil {
fmt.Println(err)
return
}
if fileInfo.Mode().IsRegular() {
fmt.Println("It is a file")
} else {
fmt.Println("It is a directory")
}
}
输出
It is a directory
总结
我们已经成功地编译并执行了一个go语言程序,以检查给定的文件是否是文件或目录,并附有实例。在第一和第二个程序中,我们使用了isDir()和lstat()函数,而在第三和第四个程序中我们分别使用了stat()和IsRegular()函数。