日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)

發布時間:2023/11/27 生活经验 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 簡要概述

import "io/ioutil"

io/ioutil 實現一些 I/O 實用程序函數。

2. 相關函數

2.1 func ReadAll

func ReadAll(r io.Reader) ([]byte, error)

ReadAllr 讀取數據直到 EOF 或遇到 error ,返回讀取的數據和遇到的錯誤。成功的調用返回的 errnil 而非 EOF 。因為本函數定義為讀取 r 直到 EOF ,它不會將讀取返回的 EOF 視為應報告的錯誤。

2.2 func ReadFile

func ReadFile(filename string) ([]byte, error)

ReadFilefilename 指定的文件中讀取數據并返回文件的內容。成功的調用返回的 errnil 而非 EOF 。因為本函數定義為讀取整個文件,它不會將讀取返回的 EOF 視為應報告的錯誤。

2.3 func WriteFile

func WriteFile(filename string, data []byte, perm os.FileMode) error

函數向 filename 指定的文件中寫入數據。如果文件不存在將按給出的權限創建文件,否則在寫入數據之前清空文件。

UNIX 型系統中, 文件的默認權限為 0644 ,即所有者能夠讀取和寫入,而其他人只能讀取。

2.4 func ReadDir

func ReadDir(dirname string) ([]os.FileInfo, error)

返回 dirname 指定的目錄的目錄信息的有序列表。包含如下信息。

  • Name :文件的名稱。
  • Size :文件的長度, 單位為宇節。
  • Mode : 用二進制位表示的權限。
  • ModTime:文件最后一個被修改的時間。
  • IsDir:文件是否是目錄。
  • Sys :底層數據源。

2.5 func TempDir

func TempDir(dir, prefix string) (name string, err error)

dir 目錄里創建一個新的、使用 prfix 作為前綴的臨時文件夾,并返回文件夾的路徑。如果 dir 是空字符串, TempDir 使用默認用于臨時文件的目錄(參見 os.TempDir 函數)。 不同程序同時調用該函數會創建不同的臨時目錄,調用本函數的程序有責任在不需要臨時文件夾時摧毀它。

2.6 func TempFile

func TempFile(dir, prefix string) (f *os.File, err error)

dir 目錄下創建一個新的、使用 prefix 為前綴的臨時文件,以讀寫模式打開該文件并返回 os.File 指針。如果 dir 是空字符串, TempFile 使用默認用于臨時文件的目錄(參見 os.TempDir 函數)。不同程序同時調用該函數會創建不同的臨時文件,調用本函數的程序有責任在不需要臨時文件時摧毀它。

2.7 復制文件

ioutil 包可用于執行一些常見的文件處理操作,但要執行更復雜的操作,應使用 os 包。os 包運行在稍低的層級,因此使用它時,必須手工關閉打開的文件。如果您閱讀 os 包的源代碼,將發現 ioutil 包中的很多函數都是 os 包包裝器,您無須顯式地關閉文件。

func main() {src, err := os.Open("./example05.txt")if err != nil {fmt.Println(err)}defer src.Close()/*使用函數 OpenFile 打開文件。第一個參數是要打開(如果不存在, 就創建)的文件的名稱; 第二個參數是用于文件的標志,在這里指定的是讀寫文件, 并在文件不存在時創建它; 最后一個參數設置文件的權限。*/dst, err := os.OpenFile("./example OS.copy.txt ", os.O_RDWR|os.O_CREATE, 0644)if err != nil {fmt.Println(err)}defer dst.Close()_, err = io.Copy(dst, src)if err != nil {fmt.Println(err)}
}

3. 代碼示例

package mainimport ("fmt""io/ioutil""os""strings"
)func main() {r := strings.NewReader("hello world")// ReadAll 讀取 io.Reader 對象的所有數據,返回讀取內容和錯誤allContents, err := ioutil.ReadAll(r)if err != nil {fmt.Println("ReadAll failed")}fmt.Printf("allContents is %#v\n", string(allContents))// ReadFile 讀取文件內容 ,返回讀取內容和錯誤testFile := "/home/wohu/GoCode/src/task/test.txt"txtContent, err := ioutil.ReadFile(testFile)if err != nil {fmt.Println("ReadFile failed")}fmt.Printf("txtContent is %#v\n", string(txtContent))// WriteFile 讀取文本文件內容,返回錯誤err = ioutil.WriteFile(testFile, []byte("大漠孤煙直"), 0755)if err != nil {fmt.Println("WriteFile failed")}// ReadDir 讀取某個目錄下所有的文件或者目錄列表fileInfos, err := ioutil.ReadDir("./src/task")if err != nil {fmt.Println("ReadDir failed")}fmt.Printf("ReadDir is %#v\n", fileInfos)for _, fd := range fileInfos {fmt.Printf("file or dir is  %#v, it's dir: %#v\n", fd.Name(), fd.IsDir())}// TempDir 創建臨時目錄tempDir, err := ioutil.TempDir("./src/task/", "temp")if err != nil {fmt.Println("TempDir failed")}fmt.Printf("tempDir is %#v\n", tempDir)// TempFile 創建臨時目錄tempFile, err := ioutil.TempFile("./src/task/", "temp")if err != nil {fmt.Println("TempDir failed")}tempFileName := tempFile.Name()fmt.Printf("tempFile is %#v\n", tempFile)fmt.Printf("tempFileName is %#v\n", tempFileName)defer os.RemoveAll(tempDir)      // 刪除創建的臨時目錄defer os.RemoveAll(tempFileName) // 刪除創建的臨時文件
}

總結

以上是生活随笔為你收集整理的Go 学习笔记(49)— Go 标准库之 io/ioutil(读写文件、获取目录下的文件和子目录、创建临时目录和文件)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。