日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GO教程:Go語言文件的寫入、追加、讀取、復制操作

Go語言的 os 包下有一個 OpenFile 函數(shù),其原型如下所示:

創(chuàng)新互聯(lián)建站是一家專注于做網(wǎng)站、網(wǎng)站建設(shè)與策劃設(shè)計,漳縣網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:漳縣等地區(qū)。漳縣做網(wǎng)站價格咨詢:13518219792

func OpenFile(name string, flag int, perm FileMode) (file *File, err error)

其中 name 是文件的文件名,如果不是在當前路徑下運行需要加上具體路徑;flag 是文件的處理參數(shù),為 int 類型,根據(jù)系統(tǒng)的不同具體值可能有所不同,但是作用是相同的。

下面列舉了一些常用的 flag 文件處理參數(shù):

  • O_RDONLY:只讀模式打開文件;
  • O_WRONLY:只寫模式打開文件;
  • O_RDWR:讀寫模式打開文件;
  • O_APPEND:寫操作時將數(shù)據(jù)附加到文件尾部(追加);
  • O_CREATE:如果不存在將創(chuàng)建一個新文件;
  • O_EXCL:和 O_CREATE 配合使用,文件必須不存在,否則返回一個錯誤;
  • O_SYNC:當進行一系列寫操作時,每次都要等待上次的 I/O 操作完成再進行;
  • O_TRUNC:如果可能,在打開時清空文件。

【示例 1】:創(chuàng)建一個新文件 golang.txt,并在其中寫入 5 句“http://c.biancheng.net/golang/”。

package main

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

func main() {
    //創(chuàng)建一個新文件,寫入內(nèi)容 5 句 “http://c.biancheng.net/golang/”
    filePath := "e:/code/golang.txt"
    file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
    if err != nil {
        fmt.Println("文件打開失敗", err)
    }
    //及時關(guān)閉file句柄
    defer file.Close()

    //寫入文件時,使用帶緩存的 *Writer
    write := bufio.NewWriter(file)
    for i := 0; i < 5; i++ {
        write.WriteString("http://c.biancheng.net/golang/ \n")
    }
    //Flush將緩存的文件真正寫入到文件中
    write.Flush()
}

執(zhí)行成功之后會在指定目錄下生成一個 golang.txt 文件,打開該文件如下圖所示:



【示例 2】:打開一個存在的文件,在原來的內(nèi)容追加內(nèi)容“C語言中文網(wǎng)”

package main

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

func main() {
    filePath := "e:/code/golang.txt"
    file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)
    if err != nil {
        fmt.Println("文件打開失敗", err)
    }
    //及時關(guān)閉file句柄
    defer file.Close()

    //寫入文件時,使用帶緩存的 *Writer
    write := bufio.NewWriter(file)
    for i := 0; i < 5; i++ {
        write.WriteString("C語言中文網(wǎng) \r\n")
    }
    //Flush將緩存的文件真正寫入到文件中
    write.Flush()
}

執(zhí)行成功之后,打開 golang.txt 文件發(fā)現(xiàn)內(nèi)容追加成功,如下圖所示:



【示例 3】:打開一個存在的文件,將原來的內(nèi)容讀出來,顯示在終端,并且追加 5 句“Hello,C語言中文網(wǎng)”。

package main

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

func main() {
    filePath := "e:/code/golang.txt"
    file, err := os.OpenFile(filePath, os.O_RDWR|os.O_APPEND, 0666)
    if err != nil {
        fmt.Println("文件打開失敗", err)
    }
    //及時關(guān)閉file句柄
    defer file.Close()

    //讀原來文件的內(nèi)容,并且顯示在終端
    reader := bufio.NewReader(file)
    for {
        str, err := reader.ReadString('\n')
        if err == io.EOF {
            break
        }
        fmt.Print(str)
    }

    //寫入文件時,使用帶緩存的 *Writer
    write := bufio.NewWriter(file)
    for i := 0; i < 5; i++ {
        write.WriteString("Hello,C語言中文網(wǎng)。 \r\n")
    }
    //Flush將緩存的文件真正寫入到文件中
    write.Flush()
}

執(zhí)行成功之后,會在控制臺打印出文件的內(nèi)容,并在文件中追加指定的內(nèi)容,如下圖所示:



【示例 4】:編寫一個程序,將一個文件的內(nèi)容復制到另外一個文件(注:這兩個文件都已存在)

package main

import (
    "fmt"
    "io/ioutil"
)

func main() {
    file1Path := "e:/code/golang.txt"
    file2Path := "e:/code/other.txt"
    data, err := ioutil.ReadFile(file1Path)
    if err != nil {
        fmt.Printf("文件打開失敗=%v\n", err)
        return
    }
    err = ioutil.WriteFile(file2Path, data, 0666)
    if err != nil {
        fmt.Printf("文件打開失敗=%v\n", err)
    }
}

執(zhí)行成功后,發(fā)現(xiàn)內(nèi)容已經(jīng)復制成功,如下圖所示:


當前標題:創(chuàng)新互聯(lián)GO教程:Go語言文件的寫入、追加、讀取、復制操作
網(wǎng)址分享:http://www.5511xx.com/article/dpopioh.html