Go 文件操作

2022-05-13 17:43 更新

在任何計算機設備中,文件是都是必須的對象,而在Web編程中,文件的操作一直是Web程序員經(jīng)常遇到的問題,文件操作在Web應用中是必須的,非常有用的,我們經(jīng)常遇到生成文件目錄,文件(夾)編輯等操作,現(xiàn)在我把Go中的這些操作做一詳細總結并實例示范如何使用。

目錄操作

文件操作的大多數(shù)函數(shù)都是在os包里面,下面列舉了幾個目錄操作的:

  • func Mkdir(name string, perm FileMode) error

    創(chuàng)建名稱為name的目錄,權限設置是perm,例如0777

  • func MkdirAll(path string, perm FileMode) error

    根據(jù)path創(chuàng)建多級子目錄,例如astaxie/test1/test2。

  • func Remove(name string) error

    刪除名稱為name的目錄,當目錄下有文件或者其他目錄是會出錯

  • func RemoveAll(path string) error

    根據(jù)path刪除多級子目錄,如果path是單個名稱,那么該目錄下的子目錄全部刪除。

下面是演示代碼:

package main

import (
    "fmt"
    "os"
)

func main() {
    os.Mkdir("astaxie", 0777)
    os.MkdirAll("astaxie/test1/test2", 0777)
    err := os.Remove("astaxie")
    if err != nil {
        fmt.Println(err)
    }
    os.RemoveAll("astaxie")
}

文件操作

建立與打開文件

新建文件可以通過如下兩個方法

  • func Create(name string) (file *File, err Error)

    根據(jù)提供的文件名創(chuàng)建新的文件,返回一個文件對象,默認權限是0666的文件,返回的文件對象是可讀寫的。

  • func NewFile(fd uintptr, name string) *File

    根據(jù)文件描述符創(chuàng)建相應的文件,返回一個文件對象

通過如下兩個方法來打開文件:

  • func Open(name string) (file *File, err Error)

    該方法打開一個名稱為name的文件,但是是只讀方式,內(nèi)部實現(xiàn)其實調(diào)用了OpenFile。

  • func OpenFile(name string, flag int, perm uint32) (file *File, err Error)

    打開名稱為name的文件,flag是打開的方式,只讀、讀寫等,perm是權限

寫文件

寫文件函數(shù):

  • func (file *File) Write(b []byte) (n int, err Error)

    寫入byte類型的信息到文件

  • func (file *File) WriteAt(b []byte, off int64) (n int, err Error)

    在指定位置開始寫入byte類型的信息

  • func (file *File) WriteString(s string) (ret int, err Error)

    寫入string信息到文件

寫文件的示例代碼

package main

import (
    "fmt"
    "os"
)

func main() {
    userFile := "astaxie.txt"
    fout, err := os.Create(userFile)        
    if err != nil {
        fmt.Println(userFile, err)
        return
    }
    defer fout.Close()
    for i := 0; i < 10; i++ {
        fout.WriteString("Just a test!\r\n")
        fout.Write([]byte("Just a test!\r\n"))
    }
}

讀文件

讀文件函數(shù):

  • func (file *File) Read(b []byte) (n int, err Error)

    讀取數(shù)據(jù)到b中

  • func (file *File) ReadAt(b []byte, off int64) (n int, err Error)

    從off開始讀取數(shù)據(jù)到b中

讀文件的示例代碼:

package main

import (
    "fmt"
    "os"
)

func main() {
    userFile := "asatxie.txt"
    fl, err := os.Open(userFile)        
    if err != nil {
        fmt.Println(userFile, err)
        return
    }
    defer fl.Close()
    buf := make([]byte, 1024)
    for {
        n, _ := fl.Read(buf)
        if 0 == n {
            break
        }
        os.Stdout.Write(buf[:n])
    }
}

刪除文件

Go語言里面刪除文件和刪除文件夾是同一個函數(shù)

  • func Remove(name string) Error

    調(diào)用該函數(shù)就可以刪除文件名為name的文件

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號