1. /*
    2. 读取文件:
    3. 一、读取文件(方法1)
    4. 1、只读方式打开文件 file,err := os.Open()
    5. 2、读取文件 file.Read()
    6. 3、关闭文件流 defer file.Close()
    7. 二、读取文件(方法2)bufio 读取文件
    8. 1、只读方式打开文件 file,err := os.Open()
    9. 2、创建reader对象 reader := bufio.NewReader(file)
    10. 3、ReadString读取文件 line, err := reader.ReadString('\n')
    11. 4、关闭文件流 defer file.Close()
    12. 三、读取文件(方法3)ioutil 读取文件
    13. 打开关闭文件的方法它都封装好了只需要一句话就可以读取
    14. ioutil.ReadFile("./main.go")
    15. 写入文件:
    16. 一、写入文件(方法1)
    17. 1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
    18. 2、写入文件
    19. file.Write([]byte(str)) //写入字节切片数据
    20. file.WriteString("直接写入的字符串数据") //直接写入字符串数据
    21. 3、关闭文件流 file.Close()
    22. 二、写入文件(方法2) bufio 写入文件
    23. 1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
    24. 2、创建writer对象 writer := bufio.NewWriter(file)
    25. 3、将数据先写入缓存 writer.WriteString("你好golang\r\n")
    26. 4、将缓存中的内容写入文件 writer.Flush()
    27. 5、关闭文件流 file.Close()
    28. 三、写入文件(方法3) ioutil 写入文件
    29. str := "hello golang"
    30. err := ioutil.WriteFile("C:/test.txt", []byte(str), 0666)
    31. 文件重命名:
    32. err := os.Rename("C:/test1.txt", "D:/test1.txt") //只能同盘操作
    33. 复制文件:
    34. 一、方法1
    35. input, err := ioutil.ReadFile(srcFileName)
    36. err = ioutil.WriteFile(dstFileName, input, 0644)
    37. 二、方法2
    38. source, _ := os.Open(srcFileName)
    39. destination, _ := os.OpenFile(dstFileName, os.O_CREATE|os.O_WRONLY, 0666)
    40. n, err := source.Read(buf)
    41. destination.Write(buf[:n]);
    42. 创建目录
    43. err := os.Mkdir("./abc", 0666)
    44. err := os.MkdirAll("dir1/dir2/dir3", 0666) //创建多级目录
    45. 删除目录和文件
    46. err := os.Remove("t.txt")
    47. err := os.RemoveAll("aaa")
    48. */
    49. package main
    50. import (
    51. "fmt"
    52. "os"
    53. )
    54. func main() {
    55. // 只读方式打开当前目录下的main.go文件 D:/go_demo/demo23/demo01/main.go
    56. file, err := os.Open("./main.go")
    57. defer file.Close() //必须得关闭文件流
    58. if err != nil {
    59. fmt.Println(err)
    60. return
    61. }
    62. //操作文件
    63. fmt.Println(file) //&{0xc00014a780}
    64. }
    1. package main
    2. import (
    3. "fmt"
    4. "io"
    5. "os"
    6. )
    7. /*
    8. 一、读取文件(方法1)
    9. 1、只读方式打开文件 file,err := os.Open()
    10. 2、读取文件 file.Read()
    11. 3、关闭文件流 defer file.Close()
    12. */
    13. func main() {
    14. //1、打开文件
    15. file, err := os.Open("C:/test.txt")
    16. defer file.Close()
    17. if err != nil {
    18. fmt.Println(err)
    19. return
    20. }
    21. //2、读取文件里面的内容
    22. var strSlice []byte
    23. var tempSlice = make([]byte, 128)
    24. for {
    25. n, err := file.Read(tempSlice)
    26. if err == io.EOF { //err==io.EOF表示读取完毕
    27. fmt.Println("读取完毕")
    28. break
    29. }
    30. if err != nil {
    31. fmt.Println("读取失败")
    32. return
    33. }
    34. // fmt.Printf("读取到了%v个字节\n", n)
    35. strSlice = append(strSlice, tempSlice[:n]...) //注意写法
    36. }
    37. fmt.Println(string(strSlice))
    38. }
    1. package main
    2. import (
    3. "bufio"
    4. "fmt"
    5. "io"
    6. "os"
    7. )
    8. /*
    9. 二、读取文件(方法2)bufio 读取文件
    10. 1、只读方式打开文件 file,err := os.Open()
    11. 2、创建reader对象 reader := bufio.NewReader(file)
    12. 3、ReadString读取文件 line, err := reader.ReadString('\n')
    13. 4、关闭文件流 defer file.Close()
    14. */
    15. func main() {
    16. file, err := os.Open("C:/test.txt")
    17. defer file.Close()
    18. if err != nil {
    19. fmt.Println(err)
    20. return
    21. }
    22. //bufio 读取文件
    23. var fileStr string
    24. reader := bufio.NewReader(file)
    25. for {
    26. str, err := reader.ReadString('\n') //表示一次读取以行
    27. if err == io.EOF {
    28. fileStr += str
    29. break
    30. }
    31. if err != nil {
    32. fmt.Println(err)
    33. return
    34. }
    35. fileStr += str
    36. }
    37. fmt.Println(fileStr)
    38. }
    1. package main
    2. import (
    3. "fmt"
    4. "io/ioutil"
    5. )
    6. // ioutil按行读取示例
    7. func main() {
    8. byteStr, err := ioutil.ReadFile("C:/test.txt")
    9. if err != nil {
    10. fmt.Println(err)
    11. return
    12. }
    13. fmt.Println(string(byteStr))
    14. }
    1. package main
    2. import (
    3. "fmt"
    4. "os"
    5. )
    6. /*
    7. 一、写入文件(方法1)
    8. 1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
    9. 2、写入文件
    10. file.Write([]byte(str)) //写入字节切片数据
    11. file.WriteString("直接写入的字符串数据") //直接写入字符串数据
    12. 3、关闭文件流 file.Close()
    13. */
    14. func main() {
    15. file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    16. defer file.Close()
    17. if err != nil {
    18. fmt.Println(err)
    19. return
    20. }
    21. //写如文件
    22. // for i := 0; i < 10; i++ {
    23. // file.WriteString("直接写入的字符串数据" + strconv.Itoa(i) + "\r\n")
    24. // }
    25. var str = "直接写入的字符串数据byte"
    26. file.Write([]byte(str))
    27. }
    1. package main
    2. import (
    3. "bufio"
    4. "fmt"
    5. "os"
    6. "strconv"
    7. )
    8. /*
    9. 二、写入文件(方法2) bufio 写入文件
    10. 1、打开文件 file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR, 0666)
    11. 2、创建writer对象 writer := bufio.NewWriter(file)
    12. 3、将数据先写入缓存 writer.WriteString("你好golang\r\n")
    13. 4、将缓存中的内容写入文件 writer.Flush()
    14. 5、关闭文件流 file.Close()
    15. */
    16. func main() {
    17. file, err := os.OpenFile("C:/test.txt", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0666)
    18. defer file.Close()
    19. if err != nil {
    20. fmt.Println("open file failed, err:", err)
    21. return
    22. }
    23. writer := bufio.NewWriter(file)
    24. // writer.WriteString("你好golang") //将数据先写入缓存
    25. for i := 0; i < 10; i++ {
    26. writer.WriteString("直接写入的字符串数据" + strconv.Itoa(i) + "\r\n")
    27. }
    28. writer.Flush() //将缓存中的内容写入文件
    29. }
    1. package main
    2. import (
    3. "fmt"
    4. "io/ioutil"
    5. )
    6. func main() {
    7. str := "hello golang"
    8. err := ioutil.WriteFile("C:/test.txt", []byte(str), 0666)
    9. if err != nil {
    10. fmt.Println("write file failed, err:", err)
    11. return
    12. }
    13. }
    1. package main
    2. import (
    3. "fmt"
    4. "io/ioutil"
    5. )
    6. //自己编写一个函数,接收两个文件路径 srcFileName dstFileName
    7. func copy(srcFileName string, dstFileName string) (err error) {
    8. byteStr, err1 := ioutil.ReadFile(srcFileName)
    9. if err1 != nil {
    10. return err1
    11. }
    12. err2 := ioutil.WriteFile(dstFileName, byteStr, 0666)
    13. if err2 != nil {
    14. return err2
    15. }
    16. return nil
    17. }
    18. func main() {
    19. src := "C:/test.txt"
    20. dst := "D:/test1.txt"
    21. err := copy(src, dst)
    22. if err != nil {
    23. fmt.Println(err)
    24. return
    25. }
    26. fmt.Println("复制文件成功")
    27. }
    1. package main
    2. import (
    3. "fmt"
    4. "io"
    5. "os"
    6. )
    7. //自己编写一个函数,接收两个文件路径 srcFileName dstFileName
    8. func CopyFile(srcFileName string, dstFileName string) (err error) {
    9. sFile, err1 := os.Open(srcFileName)
    10. defer sFile.Close() //必须关闭
    11. dFile, err2 := os.OpenFile(dstFileName, os.O_CREATE|os.O_WRONLY, 0666)
    12. defer dFile.Close() //必须关闭
    13. if err1 != nil {
    14. return err1
    15. }
    16. if err2 != nil {
    17. return err2
    18. }
    19. var tempSlice = make([]byte, 1280)
    20. for {
    21. //读取数据
    22. n1, err := sFile.Read(tempSlice)
    23. if err == io.EOF {
    24. break
    25. }
    26. if err != nil {
    27. return err
    28. }
    29. // 写入数据
    30. if _, err := dFile.Write(tempSlice[:n1]); err != nil {
    31. return err
    32. }
    33. }
    34. return nil
    35. }
    36. func main() {
    37. //调用CopyFile 完成文件拷贝
    38. srcFile := "C:/000.avi"
    39. dstFile := "D:/000.avi"
    40. err := CopyFile(srcFile, dstFile)
    41. if err == nil {
    42. fmt.Printf("拷贝完成\n")
    43. } else {
    44. fmt.Printf("拷贝错误 err=%v\n", err)
    45. }
    46. }
    1. package main
    2. import (
    3. "fmt"
    4. "os"
    5. )
    6. func main() {
    7. err := os.Rename("D:/000.avi", "D:/1111.avi")
    8. if err != nil {
    9. fmt.Println(err)
    10. }
    11. fmt.Println("重命名成功")
    12. }
    1. package main
    2. import (
    3. "fmt"
    4. "os"
    5. )
    6. func main() {
    7. // err := os.Mkdir("./abc", 0666)
    8. // if err != nil {
    9. // fmt.Println(err)
    10. // }
    11. // os.Mkdir("./abc", 0666)
    12. err := os.MkdirAll("./dir1/dir2/dir3", 0666) //创建多级目录
    13. if err != nil {
    14. fmt.Println(err)
    15. }
    16. }
    1. package main
    2. func main() {
    3. // /1、删除一个文件
    4. // err := os.Remove("aaa.txt")
    5. // if err != nil {
    6. // fmt.Println(err)
    7. // }
    8. //2、删除一个目录
    9. // err := os.Remove("./aaa")
    10. // if err != nil {
    11. // fmt.Println(err)
    12. // }
    13. // 3、一次删除多个文件
    14. // err := os.RemoveAll("dir1")
    15. // if err != nil {
    16. // fmt.Println(err)
    17. // }
    18. }