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