第05天(異常、文本文件處理)_04

15_設(shè)備文件的使用.go

package main

import (
    "fmt"
    "os"
)

func main() {
    //os.Stdout.Close() //關(guān)閉后飘诗,無法輸出
    //fmt.Println("are u ok?") //往標準輸出設(shè)備(屏幕)寫內(nèi)容
    //標準設(shè)備文件(os.Stdout),默認已經(jīng)打開衰琐,用戶可以直接使用
    //os.Stdout
    os.Stdout.WriteString("are u ok?\n")
    //os.Stdin.Close() //關(guān)閉后宏娄,無法輸入
    var a int
    fmt.Println("請輸入a: ")
    fmt.Scan(&a) //從標準輸入設(shè)備中讀取內(nèi)容毙石,放在a中
    fmt.Println("a = ", a)
}

16_文件的讀寫.go

package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)

func WriteFile(path string) {
    //打開文件,新建文件
    f, err := os.Create(path)
    if err != nil {
        fmt.Println("err = ", err)
        return
    }
    //使用完畢颓遏,需要關(guān)閉文件
    defer f.Close()
    var buf string
    for i := 0; i < 10; i++ {
        //"i = 1\n", 這個字符串存儲在buf中
        buf = fmt.Sprintf("i = %d\n", i)
        //fmt.Println("buf = ", buf)
        n, err := f.WriteString(buf)
        if err != nil {
            fmt.Println("err = ", err)
        }
        fmt.Println("n = ", n)
    }
}

func ReadFile(path string) {
    //打開文件
    f, err := os.Open(path)
    if err != nil {
        fmt.Println("err = ", err)
        return
    }
    //關(guān)閉文件
    defer f.Close()
    buf := make([]byte, 1024*2) //2k大小
    //n代表從文件讀取內(nèi)容的長度
    n, err1 := f.Read(buf)
    if err1 != nil && err1 != io.EOF { //文件出錯徐矩,同時沒有到結(jié)尾
        fmt.Println("err1 = ", err1)
        return
    }
    fmt.Println("buf = ", string(buf[:n]))
}

//每次讀取一行
func ReadFileLine(path string) {
    //打開文件
    f, err := os.Open(path)
    if err != nil {
        fmt.Println("err = ", err)
        return
    }
    //關(guān)閉文件
    defer f.Close()
    //新建一個緩沖區(qū),把內(nèi)容先放在緩沖區(qū)
    r := bufio.NewReader(f)
    for {
        //遇到'\n'結(jié)束讀取, 但是'\n'也讀取進入
        buf, err := r.ReadBytes('\n')
        if err != nil {
            if err == io.EOF { //文件已經(jīng)結(jié)束
                break
            }
            fmt.Println("err = ", err)
        }
        fmt.Printf("buf = #%s#\n", string(buf))
    }
}

func main() {
    path := "./demo.txt"
    //WriteFile(path)
    //ReadFile(path)
    ReadFileLine(path)
}

17_拷貝文件.go

package main

import (
    "fmt"
    "io"
    "os"
)

func main() {
    list := os.Args //獲取命令行參數(shù)
    if len(list) != 3 {
        fmt.Println("usage: xxx srcFile dstFile")
        return
    }

    srcFileName := list[1]
    dstFileName := list[2]
    if srcFileName == dstFileName {
        fmt.Println("源文件和目的文件名字不能相同")
        return
    }

    //只讀方式打開源文件
    sF, err1 := os.Open(srcFileName)
    if err1 != nil {
        fmt.Println("err1 = ", err1)
        return
    }

    //新建目的文件
    dF, err2 := os.Create(dstFileName)
    if err2 != nil {
        fmt.Println("err2 = ", err2)
        return
    }

    //操作完畢叁幢,需要關(guān)閉文件
    defer sF.Close()
    defer dF.Close()

    //核心處理滤灯,從源文件讀取內(nèi)容,往目的文件寫遥皂,讀多少寫多少
    buf := make([]byte, 4*1024) //4k大小臨時緩沖區(qū)
    for {
        n, err := sF.Read(buf) //從源文件讀取內(nèi)容
        if err != nil {
            fmt.Println("err = ", err)
            if err == io.EOF { //文件讀取完畢
                break
            }
        }
        //往目的文件寫力喷,讀多少寫多少
        dF.Write(buf[:n])
    }
}

課堂筆記

設(shè)備文件:
屏幕(標準輸出設(shè)備)  fmt.Println()   往標準輸出設(shè)備寫內(nèi)容
鍵盤(標準輸入設(shè)備)  fmt.Scan()      從標準輸入設(shè)備讀取內(nèi)容

磁盤文件,放在存儲設(shè)備上的文件
1) 文本文件     以記事本打開演训,能看到內(nèi)容(不是亂碼)
2) 二進制文件    以記事本打開弟孟,能看到內(nèi)容(是亂碼)

為什么需要文件?內(nèi)存掉電丟失样悟,程序結(jié)束拂募,內(nèi)存中的內(nèi)容消失
文件放磁盤,程序結(jié)束窟她,文件還是存在
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陈症,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子震糖,更是在濱河造成了極大的恐慌录肯,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吊说,死亡現(xiàn)場離奇詭異论咏,居然都是意外死亡,警方通過查閱死者的電腦和手機颁井,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門厅贪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人雅宾,你說我怎么就攤上這事养涮。” “怎么了眉抬?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵贯吓,是天一觀的道長。 經(jīng)常有香客問我蜀变,道長悄谐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任昏苏,我火速辦了婚禮尊沸,結(jié)果婚禮上威沫,老公的妹妹穿的比我還像新娘。我一直安慰自己洼专,他們只是感情好棒掠,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著屁商,像睡著了一般烟很。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜡镶,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天雾袱,我揣著相機與錄音,去河邊找鬼官还。 笑死芹橡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的望伦。 我是一名探鬼主播林说,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屯伞!你這毒婦竟也來了腿箩?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤劣摇,失蹤者是張志新(化名)和其女友劉穎珠移,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體末融,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡钧惧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滑潘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垢乙。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡锨咙,死狀恐怖语卤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情酪刀,我是刑警寧澤粹舵,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站骂倘,受9級特大地震影響眼滤,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜历涝,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一诅需、第九天 我趴在偏房一處隱蔽的房頂上張望漾唉。 院中可真熱鬧,春花似錦堰塌、人聲如沸赵刑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽般此。三九已至,卻和暖如春牵现,著一層夾襖步出監(jiān)牢的瞬間铐懊,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工瞎疼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留科乎,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓贼急,卻偏偏與公主長得像喜喂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子竿裂,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容