以只读方式打开文件
Go
package main
import (
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("./main.go")
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
fmt.Println(file)
var tempSlice = make([]byte, 128)
var strSlice []byte
for {
n, errr := file.Read(tempSlice)
if errr == io.EOF {
fmt.Println("读取完成")
break
}
if errr != nil {
fmt.Println("失败")
}
fmt.Println(n)
strSlice = append(strSlice, tempSlice[:n]...)
}
fmt.Println(string(strSlice))
}
第二种
Go
package main
import (
"bufio"
"fmt"
"io"
"os"
)
func main() {
file, err := os.Open("./main.go")
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
reader := bufio.NewReader(file)
var fileStr string
for {
str, err := reader.ReadString('\n')
if err == io.EOF {
fileStr += str
break
}
if err != nil {
fmt.Println(err)
return
}
fileStr += str
}
fmt.Println(fileStr)
}
注意读取结束后还可能会有残留数据
第三种
Go
package main
import (
"fmt"
"io/ioutil"
)
func main() {
file, err := ioutil.ReadFile("./main.go")
if err != nil {
fmt.Println(err)
}
fmt.Println(string(file))
}
第一种写入的方法
Go
package main
import (
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("D:/test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
for i := 0; i < 10; i++ {
file.WriteString("w123\r\n")
}
file.Write([]byte("123123"))
}
Go
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
file, err := os.OpenFile("D:/test.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
writer := bufio.NewWriter(file)
for i := 0; i < 10; i++ {
writer.WriteString("你好")
writer.Flush()
}
}
第三种
Go
package main
import (
"fmt"
"io/ioutil"
)
func main() {
str := "hello"
err := ioutil.WriteFile("D:/test.txt", []byte(str), 0666)
if err != nil {
fmt.Println(err)
return
}
}
可以通过ioutil包来复制文件,先读,再写,其他两种方式也可以
创建目录
Go
err:=os.MkdirAll("./abc/a/b/c",0666)
删除
Go
err:=os.Remove("aaa.txt")
os.RemoveAll 删除所有文件
os.Rename(xxx,yyy)重命名