1、读取文件(3种方法)
一、读取文件(方法1):
1、只读方式打开文件 file,err := os.Open()
2、读取文件 file.Read()
3、关闭文件流 defer file.Close()
二、读取文件(方法2)bufio 读取文件
1、只读方式打开文件 file,err := os.Open()
2、创建reader对象 reader := bufio.NewReader(file)
3、ReadString读取文件 line, err := reader.ReadString('\n')
4、关闭文件流 defer file.Close()
三、读取文件(方法3)ioutil 读取文件
打开关闭文件的方法它都封装好了只需要一句话就可以读取
ioutil.ReadFile("./main.go")
2、写入文件(3种方法)
一、写入文件(方法1)
1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
2、写入文件
file.Write([]byte(str)) //写入字节切片数据
file.WriteString("直接写入的字符串数据") //直接写入字符串数据
3、关闭文件流 file.Close()
二、写入文件(方法2) bufio 写入文件
1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
2、创建writer对象 writer := bufio.NewWriter(file)
3、将数据先写入缓存 writer.WriteString("你好golang\r\n")
4、将缓存中的内容写入文件 writer.Flush()
5、关闭文件流 file.Close()
三、写入文件(方法3) ioutil 写入文件
str := "hello golang"
err := ioutil.WriteFile("C:/test.txt", []byte(str), 0666)
3、文件重命名
err := os.Rename("C:/test1.txt", "D:/test1.txt") //只能同盘操作
4、复制文件
一、方法1
input, err := ioutil.ReadFile(srcFileName)
err = ioutil.WriteFile(dstFileName, input, 0644)
二、方法2
source, _ := os.Open(srcFileName)
destination, _ := os.OpenFile(dstFileName, os.O_CREATE|os.O_WRONLY, 0666)
n, err := source.Read(buf)
destination.Write(buf[:n]);
5创建目录
err := os.Mkdir("./abc", 0666)
err := os.MkdirAll("dir1/dir2/dir3", 0666) //创建多级目录
6、删除目录和文件
err := os.Remove("t.txt")
err := os.RemoveAll("aaa")
7、实现源码案例如下:
- 读取文件1
package main
import (
"fmt"
"io"
"os"
)
/*
一、读取文件(方法1)
1、只读方式打开文件 file,err := os.Open()
2、读取文件 file.Read()
3、关闭文件流 defer file.Close()
*/
func main() {
//1、打开文件
file, err := os.Open("./1文件操作.go")
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
//2、读取文件里面的内容
var strSlice []byte
var tempSlice = make([]byte, 128)
for {
n, err := file.Read(tempSlice)
if err == io.EOF { //err==io.EOF表示读取完毕
fmt.Println("读取完毕")
break
}
if err != nil {
fmt.Println("读取失败")
return
}
// fmt.Printf("读取到了%v个字节\n", n)
strSlice = append(strSlice, tempSlice[:n]...) //注意写法
}
fmt.Println(string(strSlice))
}
- 读取文件2
package main
import (
"bufio"
"fmt"
"io"
"os"
)
/*
二、读取文件(方法2)bufio 读取文件
1、只读方式打开文件 file,err := os.Open()
2、创建reader对象 reader := bufio.NewReader(file)
3、ReadString读取文件 line, err := reader.ReadString('\n')
4、关闭文件流 defer file.Close()
*/
func main() {
file, err := os.Open("C:/test.txt")
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
//bufio 读取文件
var fileStr string
reader := bufio.NewReader(file)
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)
}
- 读取文件3
package main
import (
"fmt"
"io/ioutil"
)
// ioutil按行读取示例
func main() {
byteStr, err := ioutil.ReadFile("C:/test.txt")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(byteStr))
}
- 文件写入1
package main
import (
"fmt"
"os"
)
/*
一、写入文件(方法1)
1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
2、写入文件
file.Write([]byte(str)) //写入字节切片数据
file.WriteString("直接写入的字符串数据") //直接写入字符串数据
3、关闭文件流 file.Close()
*/
func main() {
file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
defer file.Close()
if err != nil {
fmt.Println(err)
return
}
//写如文件
// for i := 0; i < 10; i++ {
// file.WriteString("直接写入的字符串数据" + strconv.Itoa(i) + "\r\n")
// }
var str = "直接写入的字符串数据byte"
file.Write([]byte(str))
}
- 文件写入2
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
/*
二、写入文件(方法2) bufio 写入文件
1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
2、创建writer对象 writer := bufio.NewWriter(file)
3、将数据先写入缓存 writer.WriteString("你好golang\r\n")
4、将缓存中的内容写入文件 writer.Flush()
5、关闭文件流 file.Close()
*/
func main() {
file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)
defer file.Close()
if err != nil {
fmt.Println("open file failed, err:", err)
return
}
writer := bufio.NewWriter(file)
// writer.WriteString("你好golang") //将数据先写入缓存
for i := 0; i < 10; i++ {
writer.WriteString("直接写入的字符串数据" + strconv.Itoa(i) + "\r\n")
}
writer.Flush() //将缓存中的内容写入文件
}
- 文件写入3
package main
import (
"fmt"
"io/ioutil"
)
func main() {
str := "hello golang"
err := ioutil.WriteFile("C:/test.txt", []byte(str), 0666)
if err != nil {
fmt.Println("write file failed, err:", err)
return
}
}
-文件目录删除、创建、重命名看上面介绍。。。。
觉得有帮助,帮忙点个赞,关注共同学习!!1
有疑问加站长微信联系(非本文作者)