/*读取文件: 一、读取文件(方法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")写入文件: 一、写入文件(方法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)文件重命名: err := os.Rename("C:/test1.txt", "D:/test1.txt") //只能同盘操作复制文件: 一、方法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]);创建目录 err := os.Mkdir("./abc", 0666) err := os.MkdirAll("dir1/dir2/dir3", 0666) //创建多级目录删除目录和文件 err := os.Remove("t.txt") err := os.RemoveAll("aaa")*/package mainimport ( "fmt" "os")func main() { // 只读方式打开当前目录下的main.go文件 D:/go_demo/demo23/demo01/main.go file, err := os.Open("./main.go") defer file.Close() //必须得关闭文件流 if err != nil { fmt.Println(err) return } //操作文件 fmt.Println(file) //&{0xc00014a780}}
package mainimport ( "fmt" "io" "os")/* 一、读取文件(方法1) 1、只读方式打开文件 file,err := os.Open() 2、读取文件 file.Read() 3、关闭文件流 defer file.Close()*/func main() { //1、打开文件 file, err := os.Open("C:/test.txt") 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))}
package mainimport ( "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)}
package mainimport ( "fmt" "io/ioutil")// ioutil按行读取示例func main() { byteStr, err := ioutil.ReadFile("C:/test.txt") if err != nil { fmt.Println(err) return } fmt.Println(string(byteStr))}
package mainimport ( "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))}
package mainimport ( "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() //将缓存中的内容写入文件}
package mainimport ( "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 }}
package mainimport ( "fmt" "io/ioutil")//自己编写一个函数,接收两个文件路径 srcFileName dstFileNamefunc copy(srcFileName string, dstFileName string) (err error) { byteStr, err1 := ioutil.ReadFile(srcFileName) if err1 != nil { return err1 } err2 := ioutil.WriteFile(dstFileName, byteStr, 0666) if err2 != nil { return err2 } return nil}func main() { src := "C:/test.txt" dst := "D:/test1.txt" err := copy(src, dst) if err != nil { fmt.Println(err) return } fmt.Println("复制文件成功")}
package mainimport ( "fmt" "io" "os")//自己编写一个函数,接收两个文件路径 srcFileName dstFileNamefunc CopyFile(srcFileName string, dstFileName string) (err error) { sFile, err1 := os.Open(srcFileName) defer sFile.Close() //必须关闭 dFile, err2 := os.OpenFile(dstFileName, os.O_CREATE|os.O_WRONLY, 0666) defer dFile.Close() //必须关闭 if err1 != nil { return err1 } if err2 != nil { return err2 } var tempSlice = make([]byte, 1280) for { //读取数据 n1, err := sFile.Read(tempSlice) if err == io.EOF { break } if err != nil { return err } // 写入数据 if _, err := dFile.Write(tempSlice[:n1]); err != nil { return err } } return nil}func main() { //调用CopyFile 完成文件拷贝 srcFile := "C:/000.avi" dstFile := "D:/000.avi" err := CopyFile(srcFile, dstFile) if err == nil { fmt.Printf("拷贝完成\n") } else { fmt.Printf("拷贝错误 err=%v\n", err) }}
package mainimport ( "fmt" "os")func main() { err := os.Rename("D:/000.avi", "D:/1111.avi") if err != nil { fmt.Println(err) } fmt.Println("重命名成功")}
package mainimport ( "fmt" "os")func main() { // err := os.Mkdir("./abc", 0666) // if err != nil { // fmt.Println(err) // } // os.Mkdir("./abc", 0666) err := os.MkdirAll("./dir1/dir2/dir3", 0666) //创建多级目录 if err != nil { fmt.Println(err) }}
package mainfunc main() { // /1、删除一个文件 // err := os.Remove("aaa.txt") // if err != nil { // fmt.Println(err) // } //2、删除一个目录 // err := os.Remove("./aaa") // if err != nil { // fmt.Println(err) // } // 3、一次删除多个文件 // err := os.RemoveAll("dir1") // if err != nil { // fmt.Println(err) // }}