Go基础----文件读取,写入,追加,指针,ioutil文件操作
文件读取概念
读:
a.文件位置
b.打开文件
c.读取文件
d.关闭文件
package main
import (
"fmt"
"io"
"os"
)
func main() {
//a.文件位置
path := "user.txt"
//b.打开文件
file, err := os.Open(path)
if err != nil {
fmt.Println(err)
} else {
bytes := make([]byte, 20)
//fmt.Println(bytes)
//fmt.Println(file)
for {
n, err := file.Read(bytes)
if err != nil {
if err != io.EOF {
fmt.Println(err)
}
break
} else {
fmt.Print(string(bytes[:n]))
}
}
file.Close()
}
//fmt.Println(err)
//fmt.Printf("%T \n", file)
}
文件写取概念
写
a.创建文件
b.写入内容
c.关闭
package main
import (
"fmt"
"os"
)
func main() {
path := "user.txt"
file, err := os.Create(path)
if err != nil {
fmt.Println(err)
} else {
//写入
file.Write([]byte("1213fdfdfdfdf"))
//追加
file.WriteString("tyu")
file.Close()
}
}
文件追加
追加
文件路径:
绝对路径:程序不管在什么位置运行,操作的文件都不会变化
相对路径:与程序位置有关(程序运行的位置) _ ./xxxxx …/xxxx
程序放置的位置: C:/bin/xin.sh
程序运行的位置: 在E:/ 运行 C:/bin/xin.sh
package main
import (
"log"
"os"
"strconv"
"time"
)
func main() {
path := "user.log"
file, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE, os.ModePerm)
if err == nil {
file.WriteString(strconv.FormatInt(time.Now().Unix(), 10))
file.WriteString("\n")
file.Close()
}
}
与log模块合用
package main
import (
"log"
"os"
"time"
)
func main() {
path := "user.log"
file, err := os.OpenFile(path, os.O_APPEND|os.O_CREATE, os.ModePerm)
if err == nil {
log.SetOutput(file)
log.SetPrefix("users:")
log.SetFlags(log.Flags() | log.Lshortfile)
log.Print(time.Now().Unix())
file.Close()
}
}
文件指针
package main
import (
"fmt"
"os"
)
func main() {
file, _ := os.Open("user.txt")
//偏移量,相对位置
//文件开始 0 os.SEEK_SET
//当前位置 1 os.SEEK_CUR
//文件末尾 2 os.SEEK_END
fmt.Println(file.Seek(5, 0))
bytes := make([]byte, 100)
n, err := file.Read(bytes)
fmt.Println(n, err, string(bytes[:n]))
n, err = file.Read(bytes)
fmt.Println(n, err, bytes[:n])
file.Close()
}
ioutil文件操作
package main
import (
"fmt"
"io/ioutil"
"os"
)
func main() {
path := "user.txt"
file, err := os.Open(path)
if err != nil {
fmt.Println(err)
} else {
bytes, err := ioutil.ReadAll(file)
fmt.Println(bytes, err)
file.Close()
}
}
readfile
package main
import (
"fmt"
"io/ioutil"
)
func main() {
bytes, err := ioutil.ReadFile("user.txt")
if err == nil {
fmt.Println(string(bytes))
}
}