一、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
微信掃一掃
支付寶掃一掃