2.7 檔案操作1:檔案讀寫的一般操作
阿新 • • 發佈:2018-12-09
匯入依賴
import (
"os"
"fmt"
"time"
"bufio"
"io"
"io/ioutil"
)
開啟和關閉檔案
func main41() {
//開啟檔案
filePtr, err := os.Open("d:/小黑子.avi")
if err != nil {
fmt.Println("檔案開啟失敗,err=", err)
} else {
fmt.Println("檔案開啟成功")
}
//關閉
//defer filePtr.Close ()
defer func() {
filePtr.Close()
fmt.Println("檔案已關閉")
}()
fmt.Println("愉快滴欣賞avi藝術")
time.Sleep(3 * time.Second)
}
讀取資料
func main42() {
//開啟和關閉檔案
//os.O_RDONLY 以只讀模式開啟
//0765 檔案主人的許可權7(4+2+1=可讀+可寫+可執行),檔案的使用者組下的人的許可權6(4+2=可讀+可寫),其他人的許可權5(4+1=可讀+可執行)
filePtr, err := os.OpenFile("d:/abc.txt" , os.O_RDONLY, 0765)
if err != nil {
fmt.Println("檔案開啟失敗,err=", err)
return
} else {
fmt.Println("開啟檔案成功")
}
//開啟時立即掛起關閉程式
defer func() {
defer filePtr.Close()
fmt.Println("檔案已關閉")
}()
//建立檔案的讀取器
reader := bufio.NewReader(filePtr)
//迴圈讀取
for {
//以換行符為界,分批次讀取資料,得到str(str中包括一個換行符)
str, err := reader.ReadString('\n')
if err != nil {
fmt.Println("讀取失敗,err=", err)
//如果已到檔案末尾,就結束迴圈
if err == io.EOF {
break
}
}
//列印讀到的內容
fmt.Print(str)
}
fmt.Println("讀取結束")
}
讀取資料2
func main43() {
bytes, err := ioutil.ReadFile("d:/abc.txt")
if err != nil {
fmt.Println("讀取失敗,err=", err)
} else {
contentStr := string(bytes)
fmt.Println(contentStr)
}
}
寫入資料 寫入資料分三種模式 - 創寫模式 - 覆寫模式 - 追加模式
func main44() {
//開啟並延時關閉檔案
//創寫模式
//file, err := os.OpenFile("d:/大黑子.avi", os.O_CREATE|os.O_WRONLY, 0754)
//覆寫模式
//file, err := os.OpenFile("d:/兄弟連.txt", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0754)
//追加模式
file, err := os.OpenFile("d:/兄弟連.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0754)
if err != nil {
fmt.Println("檔案開啟失敗,err=", err)
return
} else {
fmt.Println("開啟檔案成功")
}
defer file.Close()
//建立寫入器
writer := bufio.NewWriter(file)
//執行帶緩衝的寫入
writer.WriteString("大海啊你全他媽是水\n")
writer.WriteString("蜘蛛啊你全他媽是腿\n")
writer.WriteString("辣椒啊真他媽辣嘴\n")
writer.WriteString("不好好學習真他媽後悔\n")
//強制將緩衝區中的內容寫入檔案
writer.Flush()
fmt.Println("寫入成功!")
}
判斷檔案是否存在
func CheckIfFileExist(filename string) (exists bool, info string) {
fileInfo, err := os.Stat(filename)
fmt.Println(fileInfo, err)
if fileInfo != nil && err == nil {
fmt.Printf("%s檔案存在\n", filename)
exists = true
} else if os.IsNotExist(err) {
fmt.Printf("%s檔案不存在\n", filename)
exists = false
} else {
fmt.Println("搞不清存不存在!")
exists = false
info = "發生了一些奇奇怪怪的事情..."
}
return
}
func main45() {
CheckIfFileExist("d:/小黑子.avi")
CheckIfFileExist("d:/小白子.avi")
}
快捷寫入
func main46() {
//預設模式:os.O_WRONLY|os.O_CREATE|os.O_TRUNC=只寫+不存在就建立+【覆寫模式】
err := ioutil.WriteFile("d:/abc.txt", []byte("再看我\n再看我就把你喝掉"), 0754)
if err != nil {
fmt.Println("寫入失敗")
} else {
fmt.Println("寫入成功")
}
fmt.Println("寫入結束")
}