新聞中心
文件
【1】文件是什么?
文件是保存數(shù)據(jù)的地方,是數(shù)據(jù)源的一種,比如大家經(jīng)常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數(shù)據(jù),它既可以保存一張圖片,也可以保持視頻,聲音...

創(chuàng)新互聯(lián)成立與2013年,先為金壇等服務建站,金壇等地企業(yè),進行企業(yè)商務咨詢服務。為金壇企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
【2】os包下的File結(jié)構(gòu)體封裝了對文件的操作:
【3】File結(jié)構(gòu)體---打開文件和關(guān)閉文件:
(1)打開文件,用于讀?。海ê瘮?shù))
傳入一個字符串(文件的路徑),返回的是文件的指針,和是否打開成功
(2)關(guān)閉文件:(方法)
使文件不能用于讀寫。它返回可能出現(xiàn)的錯誤
【4】案例:
package main
import(
"fmt"
"os"
)
func main() {
//打開文件:
file,err := os.Open("D:/test.txt")
if err != nil {
fmt.Println("文件打開出錯,對應錯誤為:",err)
}
//沒有出錯,輸出文件:
fmt.Println("文件=v%",file)
//.........一系列操作
//關(guān)閉文件:
err2 := file.Close()
if err2 != nil {
fmt.Println("關(guān)閉失敗!")
}
}io的引入
【1】IO流對文件進行操作:
讀取文件(一次性)
【1】讀取文件的內(nèi)容并顯示在終端(使用ioutil一次將整個文件讀入到內(nèi)存中),這種方式適用于文件不大的情況。相關(guān)方法和函數(shù)(ioutil.ReadFile)
【2】案例:
package main
import(
"fmt"
"io/ioutil"
)
func main() {
//備注:在下面的程序中不需要進行 Open\Close操作,因為文件的打開和關(guān)閉操作被封裝在ReadFile函數(shù)內(nèi)部了
//讀取文件:
content,err := ioutil.ReadFile("D:/test.txt")
if err != nil {
fmt.Println("讀取錯誤,錯誤為:",err)
}
//如果讀取成功,將內(nèi)容顯示在終端即可:
//fmt.Printf("%v",content)
fmt.Printf("%v",string(content))
}讀取文件(帶緩沖區(qū))
【1】讀取文件的內(nèi)容并顯示在終端(帶緩沖區(qū)的方式-4096字節(jié)),適合讀取比較大的文件,使用os.Open,file.Close,bufio.NewReader(),reader.ReadString函數(shù)和方法
【2】案例:
package main
import(
"fmt"
"io"
"os"
"bufio"
)
func main() {
file,err := os.Open("D:/test.txt")
if err != nil {
fmt.Println("打開文件失敗,err=:",err)
}
//當函數(shù)退出時,讓file關(guān)閉,防止內(nèi)存泄露:
defer file.Close()
//創(chuàng)建一個流:
reader := bufio.NewReader(file)
//讀取操作:
for{
//讀取到一個換行就結(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】打開文件操作:
三個參數(shù)含義:
(1)要打開的文件的路徑
(2)文件打開模式(可以利用"|"符號進行組合)
(3)權(quán)限控制(linux/unix系統(tǒng)下才生效,windows下設(shè)置無效)- 0666
【2】案例:
package main
import(
"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 main
import(
"io/ioutil"
"fmt"
)
func main() {
//定義源文件:
filePath := "D:/test.txt"
//定義目標文件:
newPath := "D:/test_copy.txt"
//對文件進行讀取:
content,err := ioutil.ReadFile(filePath)
if err != nil {
fmt.Printf("打開文件失敗",err)
return
}
//寫出文件:
err = ioutil.WriteFile(newPath,content,0666)
if err != nil {
fmt.Println("寫出失敗")
}
} 文章名稱:讓我們一起聊聊文件的操作
網(wǎng)頁地址:http://m.fisionsoft.com.cn/article/dhosicd.html


咨詢
建站咨詢
