1. 程式人生 > >golang 建立、讀取、寫入檔案

golang 建立、讀取、寫入檔案

一、golang建立文字檔案

        f,err := os.Create( fileName )

        defer f.Close()

        if err !=nil {

            fmt.Println( err.Error() )

        } else {

            _,err=f.Write([]byte("要寫入的文字內容"))

            fmt.Println( err.Error() )

        }

 

二、golang讀取文字檔案

        f, err := os.OpenFile(fileName, os.O_RDONLY,0600)

        defer f.Close()

        if err !=nil {

            fmt.Println(err.Error())

        } else {

            contentByte,err=ioutil.ReadAll(f)

            fmt.Println( string(contentByte), err.Error() )

        }

        OpenFile用法:os.OpenFile(檔名,開啟方式,開啟模式)

        //開啟方式

        const (

            //只讀模式

            O_RDONLY int = syscall.O_RDONLY // open the file read-only.

            //只寫模式

            O_WRONLY int = syscall.O_WRONLY // open the file write-only.

            //可讀可寫

            O_RDWR int = syscall.O_RDWR // open the file read-write.

            //追加內容

            O_APPEND int = syscall.O_APPEND // append data to the file when writing.

            //建立檔案,如果檔案不存在

            O_CREATE int = syscall.O_CREAT // create a new file if none exists.

            //與建立檔案一同使用,檔案必須存在

            O_EXCL int = syscall.O_EXCL // used with O_CREATE, file must not exist

            //開啟一個同步的檔案流

            O_SYNC int = syscall.O_SYNC // open for synchronous I/O.

            //如果可能,開啟時縮短檔案

            O_TRUNC int = syscall.O_TRUNC // if possible, truncate file when opened.

        )

        //開啟模式

        const (

            ModeDir FileMode = 1 << (32 - 1 - iota) // d: is a directory 資料夾模式

            ModeAppend // a: append-only 追加模式

            ModeExclusive // l: exclusive use 單獨使用

            ModeTemporary // T: temporary file (not backed up) 臨時檔案

            ModeSymlink // L: symbolic link 象徵性的關聯

            ModeDevice // D: device file 裝置檔案

            ModeNamedPipe // p: named pipe (FIFO) 命名管道

            ModeSocket // S: Unix domain socket Unix 主機 socket

            ModeSetuid // u: setuid 設定uid

            ModeSetgid // g: setgid 設定gid

            ModeCharDevice // c: Unix character device, when ModeDevice is set Unix 字元裝置,當裝置模式是設定Unix

            ModeSticky // t: sticky 粘性的

            // Mask for the type bits. For regular files, none will be set. bit位遮蓋.不變的檔案設定為none

            ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice

            ModePerm FileMode = 0777 // Unix permission bits 許可權位.

        )

 

三、golang寫入文字檔案

        f, err := os.OpenFile(fileName, os.O_WRONLY|os.O_TRUNC, 0600)

        defer f.Close()

        if err != nil {

            fmt.Println( err.Error() )

        } else {

            _,err=f.Write([]byte("要寫入的文字內容"))

            fmt.Println( err.Error() )   

       &