Go語言程式:在目錄中搜索檔案


在這篇 Go 語言文章中,我們將編寫一個 Go 語言程式,使用 os.Open() 函式以及 ioutil.ReadDir() 函式在目錄中搜索檔案。

在 Go 語言中搜索特定檔案可能是一項非常困難的任務,如果您需要搜尋大量檔案,但 Go 語言透過其內建函式使這項任務變得容易,我們將在本文中瞭解這些函式的用例。

演算法

  • 首先,我們需要匯入 "fmt" 和 "os" 包。

  • 然後,啟動 main() 函式。在 main() 函式內部,定義要搜尋的目錄名稱和要搜尋的檔名稱。

  • 使用 os.Open 開啟目錄並檢查是否有任何錯誤。

  • 使用 os.Readdir 讀取目錄的內容並檢查是否有任何錯誤。

  • 遍歷 os.FileInfo 切片,並將每個檔案的檔名與要搜尋的檔名進行比較。

  • 如果目錄中某個檔案的檔名與要搜尋的檔名匹配,則列印一條訊息,指示已找到該檔案並返回。

  • 如果到達 os.FileInfo 切片的末尾,則列印一條訊息,指示未找到該檔案。

語法

funcReadDir(fsys FS, name string) ([]DirEntry, error)

ReadDir() 函式位於 os 包中,用於讀取目錄中存在的檔案。該函式接受要讀取的目錄或檔名稱,並返回一個條目列表以及錯誤。如果檔案讀取成功,則錯誤變數為 nil。

示例 1

在本例中,我們將編寫第一種方法涉及在 Go 中使用 os 包。os.Open 函式開啟一個目錄並返回一個檔案指標,該指標可用於讀取目錄的內容。os.Readdir 函式獲取檔案指標並返回一個 os.FileInfo 切片,其中包含有關目錄中每個檔案的資訊。

package main

import (
   "fmt"
   "os"
)

func main() {
   dirname := "new"
   filename := "sample.txt"

   dir, err := os.Open(dirname)
   if err != nil {
      fmt.Println("Error opening directory:", err)
      return
   }
   defer dir.Close()

   files, err := dir.Readdir(-1)
   if err != nil {
      fmt.Println("Error reading directory:", err)
      return
   }

   for _, file := range files {
      if file.Name() == filename {
         fmt.Println("File found:", file.Name())
         return
      }
   }
   fmt.Println("File not found")
}

輸出

File found: sample.txt

示例 2

在本例中,我們將使用 ioutil 包中提供的 ReadDir() 函式來在給定目錄中搜索檔案。Go 中的 ioutil 包提供了幾個用於讀取和寫入檔案的實用程式函式。其中一個函式是 ioutil.ReadDir。此函式讀取目錄的內容並返回一個 os.FileInfo 切片。

package main

import (
   "fmt"
   "io/ioutil"
)

func main() {
   dirname := "new"
   filename := "file.txt"

   files, err := ioutil.ReadDir(dirname)
   if err != nil {
      fmt.Println("Error reading directory:", err)
      return
   }
   for _, file := range files {
      if file.Name() == filename {
         fmt.Println("File found:", file.Name())
         return
      }
   }
   fmt.Println("File not found")
}

輸出

File found: file.txt

結論

我們已經成功編譯並執行了一個 Go 語言程式來在目錄中搜索檔案,並附帶了示例。在 Go 中有多種方法可以在目錄中搜索檔案。每種方法都有其優缺點,使用哪種方法取決於任務的具體要求。無論您選擇使用 os.Open 和 os.Readdir 還是 ioutil.ReadDir,Go 都提供了易於使用且高效的工具來在目錄中搜索檔案。

更新於: 2023年5月3日

2K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告