Go 語言程式重新命名檔案


在 Go 語言中,我們可以使用 OS 包的內部函式以多種方式重新命名檔案。本文將演示如何使用 os.Create、os.Rename 和 os.Open 函式更改檔名。

方法 1:使用 os.Rename 函式

在此示例中,檔案 oldname.txt 使用 Rename 函式重新命名為 newname.txt。如果重新命名未發生,例如原始檔不存在或目標檔案已存在,則該函式會透過 panic 生成錯誤。如果重新命名過程成功,則錯誤將為 nil。

語法

os.Rename

os.Rename 是 OS 包的函式,用於重新命名特定檔案。它只有一個引數,即需要重新命名的檔名。

演算法

  • 步驟 1 − 建立一個 package main 並宣告 fmt(格式化包)、os 包在程式中,其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 建立一個 main 函式,並在該函式中使用 os.Rename,並傳入兩個輸入:舊檔案和新檔案。

  • 步驟 3 − 如果沒有出現錯誤,則表示檔案已成功重新命名。

  • 步驟 4 − 如果出現錯誤,則使用 err 建立 panic。

示例

在此示例中,我們將使用 os 包函式(如 os.Rename)來執行程式。

package main
import (
   "os"
)

func main() {
   err := os.Rename("oldname.txt", "newname.txt")  //rename the file
   if err != nil {
      panic(err)  //return the error with a panic
   }
}

輸出

If the renaming is successful:
Nothing will be printed

If the renaming is not successful:
panic: open oldname.txt: no such file or directory

goroutine 1 [running]:
main.main()
   /tmp/sandbox3294159103/prog.go:13 +0x17b

方法 2:使用 os.Open 和 os.Create 函式

在此方法中,我們首先嚐試使用 os.Rename 重新命名檔案。作為替代方法,我們使用 os.Open 開啟原始檔案,並使用 os.Create 建立新檔案。隨後,使用 Readdirnames 將原始檔案的內容複製到新檔案。最後,使用 Close 命令關閉新檔案和原始檔案。

語法

Os.Create 

Create 是 os 包的一部分,此函式建立一個新檔案,它包含一個引數,即要建立的檔名。

os.Open

此函式開啟給定的檔案。它包含一個引數,即需要訪問的檔名。

演算法

  • 步驟 1 − 建立一個 package main 並宣告 fmt(格式化包)、os 包在程式中,其中 main 生成可執行程式碼,fmt 幫助格式化輸入和輸出。

  • 步驟 2 − 使用舊檔名和所需的新檔名作為引數建立 main 函式,呼叫 os.Rename 函式。

  • 步驟 3 − 如果第一種方法出現任何錯誤,則使用 os.Open 函式嘗試開啟舊檔案。

  • 步驟 4 − 如果使用第二種方法開啟檔案時出現任何錯誤,則使用錯誤建立 panic,並使用 defer 關鍵字和 close 函式關閉檔案。

  • 步驟 5 − 使用 os.Create 函式建立一個新檔案,並在建立新檔案時返回錯誤。

  • 步驟 6 − 使用 defer 關鍵字和 close 函式關閉新檔案。

  • 步驟 7 − 在此步驟中,使用 Readdirnames 將舊檔案的內容複製到新檔案,並檢查是否出現錯誤,如果出現錯誤,則透過 panic 返回它。

示例

在此示例中,我們將使用 os 包的 os.Open 和 os.Create 函式來執行程式。

package main
import (
   "os"
)

func main() {
   err := os.Rename("oldname.txt", "newname.txt") //rename a file
   if err != nil {
      // Rename failed, try alternative method
      oldname, err := os.Open("oldname.txt") //use this function to open the file
      if err != nil {
         panic(err)
      }
      defer oldname.Close()

      newname, err := os.Create("newname.txt") //create a new file
      if err != nil {
         panic(err)
      }
      defer newname.Close()
      _, err = oldname.Readdirnames(0)
      if err != nil {
         panic(err)
      }
   }
}

輸出

If the renaming is successful:
Nothing will be printed

If the renaming is not successful:
panic: open oldname.txt: no such file or directory

goroutine 1 [running]:
main.main()
/tmp/sandbox3294159103/prog.go:13 +0x17b

結論

我們使用兩種方法執行了重新命名檔案的程式。在這兩種方法中,我們都使用了 os 包,但使用了不同的函式。在第一種方法中,使用了 os.Rename 函式,而在第二種方法中,使用了 os.Open 和 os.Create 以及 Rename 來執行程式。

更新於: 2023-02-22

541 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.