/*读取文件:一、读取文件(方法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") //只能同盘操作复制文件:一、方法1input, err := ioutil.ReadFile(srcFileName)err = ioutil.WriteFile(dstFileName, input, 0644)二、方法2source, _ := 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.gofile, 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 []bytevar 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 stringreader := bufio.NewReader(file)for {str, err := reader.ReadString('\n') //表示一次读取以行if err == io.EOF {fileStr += strbreak}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)// }}
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论