文件操作
使用Fprintln追加字符串到文件末尾
package main
import (
"fmt"
"os"
)
func main() {
f,err := os.Create("test.txt")
defer f.Close()
if err != nil{
return
}
if err!=nil{
fmt.Println(err)
}
fmt.Fprintln(f,"sss")
}
分区读取的正确操作
package main
import (
"bufio"
"fmt"
"io"
"log"
"os"
)
func main() {
f, err := os.Open("test.go")
if err != nil {
log.Fatal(err)
}
r := bufio.NewReader(f)
b := make([]byte, 256)
for {
n, err := r.Read(b) //返回该次读取的字符个数
if n == 0 && err == io.EOF {
break
}else if err != nil{
break
}
fmt.Print(string(b[:n]))
}
}
package main
import (
"io"
"os"
)
func main() {
f, _ := os.OpenFile("./test/1.txt", os.O_WRONLY, 0644) //以读写方式打开文件
off,_ := f.Seek(5,io.SeekCurrent) //io.SeekCuurent从当前位置偏移5个,返回值off表示相对于文件起始位置的偏移量 ios.SeekStart起始位置,io.SeekEnd//结束位置
f.WriteString("helloworld11111111")
f.WriteAt([]byte("nihao"), 10) 表示写到相对初始位置偏移量为10的位置
defer f.Close()
}
文件内容的拷贝,记住读多少写多少
package main
import (
"fmt"
"io"
"os"
)
func test(s []int) {
fmt.Printf("%p", &s)
}
func main() {
fr, err := os.OpenFile("/Users/xiahualou/onedrive/GoDevelopment/src/logAgent/test/1.txt", os.O_RDONLY, 0644)
if err != nil {
fmt.Println("open err", err)
return
}
defer fr.Close()
fw, err := os.Create("/Users/xiahualou/onedrive/GoDevelopment/src/logAgent/test/2.txt")
if err != nil {
fmt.Println("create err", err)
return
}
defer fw.Close()
buf := make([]byte, 4096)
for {
n, err := fr.Read(buf)
if err != nil && err == io.EOF {
fmt.Println("已经读完")
return
}
fw.Write(buf[:n]) //读多少写多少,如果直接写入,如果不是刚刚好读完4096,会把很多默认值写进去
}
}
操作目录
package main
import (
"fmt"
"os"
)
func test(s []int) {
fmt.Printf("%p", &s)
}
func main() {
fr, err := os.OpenFile("/Users/xiahualou/onedrive/GoDevelopment/src/logAgent/test", os.O_RDONLY, 0644)
if err != nil {
fmt.Println("open err", err)
return
}
defer fr.Close()
info, err := fr.Readdir(-1) //-1获取所有文件名
for _, fileInfo := range info {
if fileInfo.IsDir() {
fmt.Printf("%s is dir\n", fileInfo.Name())
} else {
fmt.Printf("%s\n", fileInfo.Name())
}
}
}