Go语言程序检查文件是目录还是文件


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

更新于: 2023年2月22日

3K+ 阅读量

启动你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.