iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
自我挑戰組

go go let's go - golang 從0開始系列 第 16

Golang 轉生到web世界 - 檔案操作

  • 分享至 

  • xImage
  •  

Golang

檔案操作

寫web多少還是會遇到除了表單外,就是跟檔案有關的行為了,這部分我自己都是習慣稱為檔案操作,在golang檔案操作需要引用os 套件。

package main 

import ( 
    "fmt" 
    "os" 
) 

 

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

os.Mkdir 是建立資料夾,(名稱 , 權限)

如果要直接建立更多層的方式則是使用os.MkdirAll

os.Remove是刪除,但如果該資料夾內有東西,則不能使用os.Remove

而是需要改用os.RemoveAll

權限777,依序是指 owner/group/others這三者的權限 ,而數字代表的是要開放那些權限,read write exe,read =4 ,write = 2 ,exe = 1, 所以7 等於全開,如果是4就代表只開read的權限。

寫檔案

package main 

import ( 
    "fmt" 
    "os" 
)  

func main() { 

    userFile := "demo.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("gogo test!\r\n") 

    } 

} 

讀取檔案的內容

package main 

 
import ( 
    "fmt" 
    "os" 
) 

 

func main() { 

    userFile := "demo.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("gogo test!\r\n") 

    } 

 

    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]) 

    } 

} 

另外我還有看到os相關的語法

IsNotExist 、 IsPermission、Rename

當然Chdir、Chmod、Chown也都有相關的function可以使用。


上一篇
Golang 轉生到web世界 - Cookie與session
下一篇
Golang 轉生到web世界 - template
系列文
go go let's go - golang 從0開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言