一、Go讀取文件內容
在Go語言中,使用ioutil包中的ReadFile()函數可以快速讀取整個文件的內容。該函數返回的是一個[]byte類型的文件內容,需要將其轉換成string類型。
package main import ( "fmt" "io/ioutil" ) func main() { data, err := ioutil.ReadFile("test.txt") if err != nil { panic(err) } content := string(data) fmt.Println(content) }
其中,ReadFile()函數的參數為文件名,文件名可以是絕對路徑或相對路徑。
二、Go讀取二進制文件
讀取二進制文件時,需要使用os包中的Open()函數打開文件,並使用ioutil包中的ReadAll()函數讀取文件內容。
package main import ( "fmt" "io/ioutil" "os" ) func main() { file, err := os.Open("test.bin") if err != nil { panic(err) } defer file.Close() data, err := ioutil.ReadAll(file) if err != nil { panic(err) } fmt.Println(data) }
三、Go讀取文件內容轉為map
使用bufio包可以按行讀取文件內容並將其轉換成map類型,示例代碼如下:
package main import ( "bufio" "fmt" "os" "strings" ) func main() { file, err := os.Open("test.txt") if err != nil { panic(err) } defer file.Close() scanner := bufio.NewScanner(file) data := make(map[string]string) for scanner.Scan() { line := scanner.Text() parts := strings.Split(line, "=") key := strings.TrimSpace(parts[0]) value := strings.TrimSpace(parts[1]) data[key] = value } fmt.Println(data) }
四、Go讀取ini文件
讀取ini文件通常使用go-ini包,示例代碼如下:
package main import ( "fmt" "github.com/go-ini/ini" ) func main() { cfg, err := ini.Load("test.ini") if err != nil { panic(err) } value := cfg.Section("section_name").Key("key_name").String() fmt.Println(value) }
五、Go讀取csv文件
讀取csv文件通常使用encoding/csv包,示例代碼如下:
package main import ( "encoding/csv" "fmt" "os" ) func main() { file, err := os.Open("test.csv") if err != nil { panic(err) } defer file.Close() reader := csv.NewReader(file) data, err := reader.ReadAll() if err != nil { panic(err) } fmt.Println(data) }
六、Go按行讀取文件
按行讀取文件時可以使用bufio包,示例代碼如下:
package main import ( "bufio" "fmt" "os" ) func main() { file, err := os.Open("test.txt") if err != nil { panic(err) } defer file.Close() scanner := bufio.NewScanner(file) for scanner.Scan() { line := scanner.Text() fmt.Println(line) } }
七、Go讀取json文件
讀取json文件時,需要使用encoding/json包,示例代碼如下:
package main import ( "encoding/json" "fmt" "os" ) type Person struct { Name string `json:"name"` Age int `json:"age"` } func main() { file, err := os.Open("test.json") if err != nil { panic(err) } defer file.Close() var people []Person decoder := json.NewDecoder(file) err = decoder.Decode(&people) if err != nil { panic(err) } fmt.Println(people) }
八、Go讀取文件夾所有文件
使用filepath包中的Walk()函數可以遞歸地讀取指定文件夾下的所有文件,示例代碼如下:
package main import ( "fmt" "os" "path/filepath" ) func main() { files := make([]string, 0) err := filepath.Walk(".", func(path string, info os.FileInfo, err error) error { if err != nil { return err } if info.Mode().IsRegular() { files = append(files, path) } return nil }) if err != nil { panic(err) } fmt.Println(files) }
九、讀取atom文件
讀取atom文件時需要使用encoding/xml包,示例代碼如下:
package main import ( "encoding/xml" "fmt" "os" ) type Feed struct { XMLName xml.Name `xml:"feed"` Title string `xml:"title"` Link []Link `xml:"link"` Entry []Entry `xml:"entry"` } type Link struct { Rel string `xml:"rel,attr"` Href string `xml:"href,attr"` } type Entry struct { Title string `xml:"title"` Link []Link `xml:"link"` Published string `xml:"published"` Updated string `xml:"updated"` Summary Summary `xml:"summary"` Content Content `xml:"content"` Author Author `xml:"author"` Category []Category `xml:"category"` Id string `xml:"id"` } type Summary struct { Type string `xml:"type,attr"` Text string `xml:",chardata"` } type Content struct { Type string `xml:"type,attr"` Text string `xml:",chardata"` } type Author struct { Name string `xml:"name"` Email string `xml:"email"` } type Category struct { Term string `xml:"term,attr"` } func main() { file, err := os.Open("test.atom") if err != nil { panic(err) } defer file.Close() var feed Feed decoder := xml.NewDecoder(file) err = decoder.Decode(&feed) if err != nil { panic(err) } fmt.Println(feed) }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/150511.html