Golang 用于检查文件是目录还是文件

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()函数。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程