Golang 转生到web世界 - 档案操作

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可以使用。


<<:  Day1-为小学生撰写的网站小游戏

>>:  【程序】我使用 Git 的心态转变 转生成恶役菜鸟工程师避免 Bad End 的 30 件事 - 3

【Day24】 Transformer 实作包(一)

开始施工 本来是想分享自己参考网路作法再改写出来的 Transformer,但後来发现自己的架构并不...

开发环境与部署环境不同时的解决方案

我的开发环境是ubuntu20,但是部署环境是ubuntu18; 开发的语言是python,出现了一...

过了一年,我更能享受其中了 谢谢你们

想想距离去年参加铁人也过了一年了,记得当时我才刚到职大概满半年吧,到现在也一年半了,我发生了哪些变化...

EP19 - [TDD] 订单 API 串接 (2/2)

Youtube 频道:https://www.youtube.com/c/kaochenlong ...

第28天~Notofication

买书 1-要写androidx.才可以用 2-Notofication要说到channel 2022...