文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保存一張圖片,也可以保持視頻,聲音...
傳入一個(gè)字符串(文件的路徑),返回的是文件的指針,和是否打開成功
(2)關(guān)閉文件:(方法)
使文件不能用于讀寫。它返回可能出現(xiàn)的錯(cuò)誤
package mainimport( "fmt" "os")func main() { //打開文件: file,err := os.Open("D:/test.txt") if err != nil { fmt.Println("文件打開出錯(cuò),對(duì)應(yīng)錯(cuò)誤為:",err) } //沒有出錯(cuò),輸出文件: fmt.Println("文件=v%",file) //.........一系列操作 //關(guān)閉文件: err2 := file.Close() if err2 != nil { fmt.Println("關(guān)閉失敗!") }}
【1】讀取文件的內(nèi)容并顯示在終端(使用ioutil一次將整個(gè)文件讀入到內(nèi)存中),這種方式適用于文件不大的情況。相關(guān)方法和函數(shù)(ioutil.ReadFile)
【2】案例:
package mainimport( "fmt" "io/ioutil")func main() { //備注:在下面的程序中不需要進(jìn)行 Open/Close操作,因?yàn)槲募拇蜷_和關(guān)閉操作被封裝在ReadFile函數(shù)內(nèi)部了 //讀取文件: content,err := ioutil.ReadFile("D:/test.txt") if err != nil { fmt.Println("讀取錯(cuò)誤,錯(cuò)誤為:",err) } //如果讀取成功,將內(nèi)容顯示在終端即可: //fmt.Printf("%v",content) fmt.Printf("%v",string(content))}
【1】讀取文件的內(nèi)容并顯示在終端(帶緩沖區(qū)的方式-4096字節(jié)),適合讀取比較大的文件,使用os.Open,file.Close,bufio.NewReader(),reader.ReadString函數(shù)和方法
【2】案例:
package mainimport( "fmt" "io" "os" "bufio")func main() { file,err := os.Open("D:/test.txt") if err != nil { fmt.Println("打開文件失敗,err=:",err) } //當(dāng)函數(shù)退出時(shí),讓file關(guān)閉,防止內(nèi)存泄露: defer file.Close() //創(chuàng)建一個(gè)流: reader := bufio.NewReader(file) //讀取操作: for{ //讀取到一個(gè)換行就結(jié)束 str,err := reader.ReadString('/n') //io.EOF 表示已經(jīng)讀取到文件的結(jié)尾 if err == io.EOF { break } //如果沒有讀取到文件結(jié)尾的話,就正常輸出文件內(nèi)容即可: fmt.Println(str) } //結(jié)束: fmt.Println("文件讀取成功,并且全部讀取完畢")}
【1】打開文件操作:
三個(gè)參數(shù)含義:
(1)要打開的文件的路徑
(2)文件打開模式(可以利用"|"符號(hào)進(jìn)行組合)
(3)權(quán)限控制(linux/unix系統(tǒng)下才生效,windows下設(shè)置無效)- 0666
【2】案例:
package mainimport( "fmt" "os" "bufio")func main() { //寫入文件操作: //打開文件: file,err := os.OpenFile("D:/test.txt",os.O_RDWR | os.O_APPEND | os.O_CREATE,0666) if err != nil { fmt.Printf("打開文件失敗",err) return } defer file.Close() //寫入文件操作:---》IO流---》緩沖輸出流(帶緩沖區(qū)) writer := bufio.NewWriter(file) for i := 0; i < 10; i++ { writer.WriteString("你好 菜園子/n") } //流帶緩沖區(qū),刷新數(shù)據(jù)--->真正寫入文件中: writer.Flush() s := os.FileMode(0666).String() fmt.Println(s)}
案例
package mainimport( "io/ioutil" "fmt")func main() { //定義源文件: filePath := "D:/test.txt" //定義目標(biāo)文件: newPath := "D:/test_copy.txt" //對(duì)文件進(jìn)行讀取: content,err := ioutil.ReadFile(filePath) if err != nil { fmt.Printf("打開文件失敗",err) return } //寫出文件: err = ioutil.WriteFile(newPath,content,0666) if err != nil { fmt.Println("寫出失敗") }}
本文鏈接:http://www.tebozhan.com/showinfo-26-122-0.html讓我們一起聊聊文件的操作
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: 十個(gè)簡(jiǎn)單但很有用的Python裝飾器
下一篇: 之家push系統(tǒng)迭代之路