go 创建文件读取文件写入文件删除文件

180it 2020-10-29 PM 1558℃ 0条
package main

import (
    "bufio"
    "fmt"
    "io"
    "os"
)



func readtxt(filename string){
    file,err:=os.Open(filename)
    if err!=nil {
        fmt.Println(err)
    }
    defer file.Close()

    //创建一个新的io.Reader,它实现了Read方法
    reader:=bufio.NewReader(file)
    //设置读取的长度
    buf:=make([]byte,1024)
    //读取文件
    _,err=reader.Read(buf)
    if err!=nil {
        fmt.Println(err)
    }
    fmt.Println(string(buf))
}



//删除指定path下的所有文件
func RemoveAllFile(file_dir string) {
delDir := os.RemoveAll(file_dir);
if delDir != nil {
fmt.Println(delDir);
}
return
}

//删除文件
func RemoveFile(file_name string) {
err := os.Remove(file_name)
if err != nil {
// 删除失败
} else {
// 删除成功
}
return
}

//文件拷贝
func CopyFile(file_name1,file_name2 string) {
// 打开文件
fp1, err1 := os.OpenFile(file_name1, os.O_RDONLY, 6)
fp2, err2 := os.Create(file_name2)
if err1 != nil || err2 != nil {
fmt.Println("操作文件失败")
return
}
// 关闭文件
defer fp1.Close()
defer fp2.Close()

// 拷贝文件
buf := make([]byte, 1024*1024*8)  // 8MB
for {
n, err := fp1.Read(buf)
if err == io.EOF {
break
}
fp2.Write(buf[:n])
}
}

//创建文件
func CreateFile(file_name string) {
    // 创建文件
    fp, err := os.Create(file_name)  // 如果文件已存在,会将文件清空。
    fmt.Println(fp, err)  // &{0xc000076780} <nil>
    fmt.Printf("%T", fp)  // *os.File 文件指针类型

    if err != nil {
        fmt.Println("文件创建失败。")
        //创建文件失败的原因有:
        //1、路径不存在  2、权限不足  3、打开文件数量超过上限  4、磁盘空间不足等
        return
    }

    // defer延迟调用
    defer fp.Close()  //关闭文件,释放资源。
}

//判断文件或文件夹是否存在
func isExist(path string)(bool){
    _, err := os.Stat(path)
    if err != nil{
        if os.IsExist(err){
            return true
        }
        if os.IsNotExist(err){
            return false
        }
        fmt.Println(err)
        return false
    }
    return true
}


// 追加内容到TXT文件
func WriteWithIoutil(data,filePath string) {
    file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND, 0666)
    if err != nil {
        fmt.Println("文件打开失败", err)
    }
    defer file.Close()
    //写入文件时,使用带缓存的 *Writer
    write := bufio.NewWriter(file)
    write.WriteString(data+"\n")
    //Flush将缓存的文件真正写入到文件中
    write.Flush()
}


func main() {

        if isExist("./123.txt"){
        //    fmt.Printf("%s is exist!", v)
        }else{
            CreateFile("123.txt")

            //fmt.Printf("%s is not exist!", v)
        }

WriteWithIoutil("asdfasdfafdasdf","123.txt")

//readtxt(filename string)
//RemoveFile(file_name string)
//CopyFile(file_name1,file_name2 string)
//RemoveAllFile("./123/")
}

支付宝打赏支付宝打赏 微信打赏微信打赏

如果文章或资源对您有帮助,欢迎打赏作者。一路走来,感谢有您!

标签: none

go 创建文件读取文件写入文件删除文件