go文件操作

1.go文件操作

复制代码
package main

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

//一次一次读取文件
func main(){
    fileName:="test.txt";
    file,_:=os.Open(fileName);//打开一个文件
    reader:=bufio.NewReader(file);//使用bufio读取一个文件
    for {//循环读取
        str,error:=reader.ReadString('\n');//使用换行符
        if error == io.EOF {
            break;
        }
        fmt.Print(str);
    }
    fmt.Println("file read end");
}
//一次性读取文件
func main(){
    content,_:= ioutil.ReadFile("test.txt");
    fmt.Print(string(content));
}
复制代码

 

2.文件操作题

复制代码
package main

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

//写入数据=数据是字符串
//func main() {
//    file,_:=os.OpenFile("1.txt",os.O_RDWR | os.O_APPEND|os. O_CREATE,066);
//    str:="this is test\n";
//    file.WriteString(str);
//    defer file.Close();
//}
//使用缓存写文件
//func main(){
//    str:="111111111111111";
//    file,_:=os.OpenFile("1.txt",os.O_RDWR|os.O_APPEND|os. O_CREATE,066);
//    write:=bufio.NewWriter(file);
//    write.WriteString(str);
//    write.Flush();
//    defer  file.Close();
//}
//文件已经存在,清空后创建
//func main(){
//    file,_:=os.OpenFile("1.txt",os.O_WRONLY|os.O_TRUNC,0666);
//    str:="2222";
//    write:=bufio.NewWriter(file);
//    write.WriteString(str);
//    write.Flush();
//}
//文件已存在,追加
//func main(){
//    file,_:=os.OpenFile("1.txt",os.O_WRONLY|os.O_APPEND,0666);
//    str:="11111111";
//    write:=bufio.NewWriter(file);
//    write.WriteString(str);
//    write.Flush();
//}
//将文件显示在终端,然后追加
func main(){
    file,_:= os.OpenFile("1.txt",os.O_RDWR|os.O_APPEND,0666);
    read:=bufio.NewReader(file);
    for {
        str,err:= read.ReadString('\n');
        if err == io.EOF {
            break;
        }
        fmt.Print(str);
    }
    newStr:="aaaaaaaaaaaaaaaaa";
    write:=bufio.NewWriter(file);
    write.WriteString(newStr);
    write.Flush();

}
复制代码

 3.将一个文件内容复制到另外一个文件内容下

复制代码
package main

//将一个文件里面内容导入另外一个文件里面去
//func main(){
//    filePath:="1.txt";
//    filePath2:="2.txt";
//    data,err:=ioutil.ReadFile(filePath);
//    if err != nil {
//        fmt.Println("file error");
//    }
//    ioutil.WriteFile(filePath2,data,0666);
//}
复制代码

 4.复制图片内容

复制代码
package main
import (
    "bufio"
    "fmt"
    "io"
    "os"
)
//复制图片内容
func main(){
    sourceFile,err:=os.Open("1.jpg");
    if err != nil {
        fmt.Println("open file is error");
    }
    reader:= bufio.NewReader(sourceFile);
    dstFile,error:=os.OpenFile("2.jpg",os.O_CREATE|os.O_RDWR,0666);
    if error != nil {
        fmt.Println("open file erorr");
    }
    writer:=bufio.NewWriter(dstFile);
    io.Copy(writer,reader);
}
复制代码

 5.将数据转化为json存储文件

复制代码
type Persion struct {
    Name string
    Age int
}
func main(){
    var persionLice [] Persion
    p1:=Persion{Name:"lisi",Age:20}
    p2:=Persion{Name:"zhangsan",Age:22}
    p3:=Persion{Name:"zhaoliu",Age:24}
    persionLice = append(persionLice,p1)
    persionLice = append(persionLice,p2)
    persionLice = append(persionLice,p3)
    strbytes,_:= json.Marshal(persionLice) //数据转化为[]bytes()类型
    ioutil.WriteFile("./demo.txt",strbytes,0666)
}
复制代码

  6.将内容读取出来

复制代码
func main(){
    var persionLice []Persion //存储固定数据容器
    content,_:=ioutil.ReadFile("./demo.txt")
    json.Unmarshal(content,&persionLice)
    for _,val:=range persionLice {
        fmt.Println(val.Name)
        fmt.Println(val.Age)
    }
}
复制代码

 

posted on   孤灯引路人  阅读(319)  评论(0编辑  收藏  举报

编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示