Go文件读写

参考文档:https://www.liwenzhou.com/posts/Go/file/

读取文件

package main  
  
import (  
    "fmt"  
    "io"    "os")  
  
func main() {  
    file, err := os.Open("./data.txt")  
    if err != nil {  
       fmt.Println("open file err:", err)  
       return  
    }  
    defer file.Close()  
    var tmp = make([]byte, 1024)  
    n, err := file.Read(tmp)  
    if err == io.EOF {  
       fmt.Println("文件读取完毕")  
       return  
    }  
    fmt.Printf("读取了%d字节数据\n", n)  
    fmt.Println(string(tmp))  
}

上面这个代码只是读取了文件中的1024个字节,并没有读取完文件内的所有内容,下面我们使用循环读取将文件全部读取

package main  
  
import (  
    "fmt"  
    "io"    "os")  
  
func main() {  
    file, err := os.Open("./data.txt")  
    if err != nil {  
       fmt.Println("open file err:", err)  
       return  
    }  
    defer file.Close()  
    var content []byte  
    var tmp = make([]byte, 10)  
    var sumByte int  
    for {  
       n, err := file.Read(tmp)  
       if err == io.EOF {  
          fmt.Println("文件读取完毕")  
          break  
       }  
       if err != nil {  
          fmt.Println("read file failed", err)  
          return  
       }  
       sumByte += n  
       content = append(content, tmp[:n]...)  
    }  
    fmt.Println(string(content))  
    fmt.Println("读取了", sumByte, "字节")  
  
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

bufio读取文件

bufio是在file的基础上封装了一层API,支持更多的功能。

package main  
  
import (  
    "bufio"  
    "fmt"    "io"    "os")  
  
func main() {  
    file, err := os.Open("data.txt")  
    if err != nil {  
       fmt.Println("file open failed", err)  
       return  
  
    }  
    defer file.Close()  
    reader := bufio.NewReader(file)  
    for {  
       line, err := reader.ReadString('\n')  
       if err == io.EOF {  
          if len(line) != 0 {  
             fmt.Println(line)  
          }  
          fmt.Println("文件读完了")  
          break  
       }  
       if err != nil {  
          fmt.Println("read file err:", err)  
          return  
       }  
       fmt.Println(line)  
    }  
}

os.ReadFIle读取整个文件

package main  
  
import (  
    "fmt"  
    "os")  
  
func main() {  
    content, err := os.ReadFile("./data.txt")  
    if err != nil {  
       fmt.Println("read file failed:", err)  
       return  
    }  
    fmt.Println(string(content))  
}

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

文件写入

Write和WriteString

package main  
  
import (  
    "fmt"  
    "os")  
  
func main() {  
    file, err := os.OpenFile("./data.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)  
    if err != nil {  
       fmt.Println("file open failed err:", err)  
       return  
    }  
    defer file.Close()  
    str := "good"  
    file.Write([]byte(str))  
  
    //file.WriteString(str)  
}

使用os.WriteFile函数

package main  
  
import (  
    "fmt"  
    "os")  
  
func main() {  
    str := "helloworld"  
    err := os.WriteFile("./data.txt", []byte(str), 0666)  
    if err != nil {  
       fmt.Println("write file failed, err : ", err)  
       return  
    }  
}

Practice

复制一个文件中的内容到另一个文件

package main  
  
import (  
    "fmt"  
    "io"    "os")  
  
func main() {  
    src, err := os.OpenFile("data.txt", os.O_RDONLY, 0666)  
    if err != nil {  
       fmt.Println("open file failed,err", err)  
       return  
    }  
    defer src.Close()  
    var content []byte  
    buf := make([]byte, 1024)  
    for {  
       n, err := src.Read(buf)  
       if err == io.EOF {  
          break  
       }  
       content = append(content, buf[:n]...)  
    }  
  
    dst, err := os.OpenFile("copy.txt", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)  
    if err != nil {  
       fmt.Println("open file failed,err", err)  
       return  
    }  
    dst.Write(content)  
    defer dst.Close()  
}

其实可以用系统的io.Copy函数

package main  
  
import (  
    "fmt"  
    "io"    "os")  
  
func CopyFile(source, destination string) {  
    src, err := os.OpenFile(source, os.O_RDONLY, 0666)  
    if err != nil {  
       fmt.Println("open file failed,err", err)  
       return  
    }  
    defer src.Close()  
  
    dst, err := os.OpenFile(destination, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666)  
    if err != nil {  
       fmt.Println("open file failed,err", err)  
       return  
    }  
    defer dst.Close()  
    _, err = io.Copy(dst, src)  
    if err != nil {  
       fmt.Println("copy file failed,err: ", err)  
       return  
    }  
}  
func main() {  
    var source string = "data.txt"  
    var destination string = "copy.txt"  
    CopyFile(source, destination)  
}

用go实现cat基本功能

package main  
  
import (  
    "fmt"  
    "os")  
  
func main() {  
    if len(os.Args) < 2 {  
       fmt.Println("Usage: cat <filename>")  
       return  
    }  
    filename := os.Args[1]  
    content, err := os.ReadFile(filename)  
    if err != nil {  
       fmt.Println("open file failed,err: ", err)  
       return  
    }  
    fmt.Printf("%v", string(content))  
}

用go实现拷贝文件到另一个文件

package main

import (
	"io"
	"os"
)

func CopyFile(dstName, srcName string) error {
	src, err := os.Open(srcName)
	if err != nil {
		return err
	}
	defer src.Close()
	dst, err := os.Create(dstName)
	if err != nil {
		return err
	}
	defer dst.Close()
	_, err = io.Copy(dst, src)
	if err != nil {
		return err
	}
	return nil
}
func main() {
	CopyFile("./test.txt", "./go.mod")
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/968744.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【清晰教程】本地部署DeepSeek-r1模型

【清晰教程】通过Docker为本地DeepSeek-r1部署WebUI界面-CSDN博客 目录 Ollama 安装Ollama DeepSeek-r1模型 安装DeepSeek-r1模型 Ollama Ollama 是一个开源工具&#xff0c;专注于简化大型语言模型&#xff08;LLMs&#xff09;的本地部署和管理。它允许用户在本地计算机…

Python实现GO鹅优化算法优化支持向量机SVM回归模型项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 在当今数据驱动的世界中&#xff0c;机器学习技术被广泛应用于各种领域&#xff0c;如金融、医疗、…

通过环境变量实现多个 python 版本的自由切换以及 Conda 虚拟环境的使用教程

目录 Python 安装包的下载和安装通过环境变量的方式来切换不同的 Python 版本Pycharm 创建项目使用虚拟环境 使用虚拟环境管理工具 condaConda 教程1. **环境管理**创建虚拟环境激活虚拟环境退出虚拟环境列出所有虚拟环境删除虚拟环境导出虚拟环境配置从文件创建虚拟环境 2. **…

OSPF高级特性(3):安全特效

引言 OSPF的基础我们已经结束学习了&#xff0c;接下来我们继续学习OSPF的高级特性。为了方便大家阅读&#xff0c;我会将高级特性的几篇链接放在末尾&#xff0c;所有链接都是站内的&#xff0c;大家点击即可阅读&#xff1a; OSPF基础&#xff08;1&#xff09;&#xff1a;工…

百度 API 教程 001:显示地图并添加控件

目录 01、基本使用 前期准备 显示地图 开启鼠标滚轮缩放地图 02、添加地图控件 添加标准地图控件 添加多个控件 网址&#xff1a;地图 JS API | 百度地图API SDK 01、基本使用 前期准备 注册百度账号 申请成为开发者 获取密钥&#xff1a;控制台 | 百度地图开放平台…

window patch按块分割矩阵

文章目录 1. excel 示意2. pytorch代码3. window mhsa 1. excel 示意 将一个三维矩阵按照window的大小进行拆分成多块2x2窗口矩阵&#xff0c;具体如下图所示 2. pytorch代码 pytorch源码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set_p…

excel里的函数技巧(持续更新中)

行转列 在 Excel 中&#xff0c;行转列&#xff08;将一行数据转换为一列&#xff0c;或者将一列数据转换为一行&#xff09;是一项常见的操作。你可以使用 转置 功能轻松实现这一操作。 TRANSPOSE(数组)

#渗透测试#批量漏洞挖掘#29网课交单平台 SQL注入

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停止本文章读。 目录 1. 漏洞原理 2. 漏洞定位 3. 攻击验证示…

我用AI做数据分析之四种堆叠聚合模型的比较

我用AI做数据分析之四种堆叠聚合模型的比较 这里AI数据分析不仅仅是指AI生成代码的能力&#xff0c;我想是测试AI数据分析方面的四个能力&#xff0c;理解人类指令的能力、撰写代码的能力、执行代码的能力和解释结果的能力。如果这四个能力都达到了相当的水准&#xff0c;才可…

机器学习 - 机器学习模型的评价指标

为了衡量一个机器学习模型的好坏&#xff0c;需要给定一个测试集&#xff0c;用模型对测试集 中的每一个样本进行预测&#xff0c;并根据预测结果计算评价分数。本文&#xff0c;我们来了解一下机器学习模型常用的评价指标。 一、分类问题常用到的混淆矩阵 在分类任务中&…

ChatGPT macOS 桌面应用让你的编程体验更上一层楼

高效开发必备&#xff1a;ChatGPT macOS 桌面应用亮点盘点 ©作者|Ninja Geek 来源|神州问学 通过 macOS 版 ChatGPT 应用&#xff0c;已经能够更好的和你的生产力工具无缝配合工作。 大概在三四周之前&#xff0c;Anthropic 在 Claude 上推出了一项名为 Computer Use 的功…

DeepSeek之Api的使用(将DeepSeek的api集成到程序中)

一、DeepSeek API 的收费模式 前言&#xff1a;使用DeepSeek的api是收费的 免费版&#xff1a; 可能提供有限的免费额度&#xff08;如每月一定次数的 API 调用&#xff09;&#xff0c;适合个人开发者或小规模项目。 付费版&#xff1a; 超出免费额度后&#xff0c;可能需要按…

蓝桥杯(B组)-每日一题

题目&#xff1a; 思路&#xff1a; 首先将所有牛分类 1.a第一头母牛-每年年初生一头小母牛 2.不能生小牛的牛&#xff1a; b1-一岁小母牛 b2-二岁小母牛 b3-三岁小母牛 超过4岁就会再生一头小牛 因此计算每年生的小牛是第一头生的a再加上4岁后的生的 代码实现&#xff1…

deepseek+ollama+anythingLLM搭建本地知识库AI的笔记

所有内容都安装在docker里&#xff0c;安装完ollama后&#xff0c;在其bash里&#xff1a; ollama run deepseek-r1:1.5b 于是就安装好了deepseek, 再安装anythingLLM有点坑&#xff1a; export STORAGE_LOCATION$HOME/anythingllm && \ mkdir -p $STORAGE_LOCATIO…

Python中的json文件操作

1.1 基础知识 什么是JSON&#xff1a;&#xff08;JavaScript Object Notation&#xff09;是一种简洁、易读的数据语言&#xff0c;广泛用于数据交换、文档储存和web开发&#xff1b;适合数据量大&#xff0c;不要求保留原有的数据类型。导入&#xff1a;import json&#xf…

使用JavaScript设计一款简单的数字时钟

本文目录 使用 JavaScript 设计一款带日期显示的数字时钟效果预览1. 项目概述2. HTML 结构代码说明 3. CSS 样式代码说明 4. JavaScript 逻辑代码说明 5. 运行效果 使用 JavaScript 设计一款带日期显示的数字时钟 本文将详细介绍如何使用 HTML、CSS 和 JavaScript 设计一款带日…

PPDock:复旦大学团队研发的蛋白质-配体“盲对接“技术

PPDock: Pocket Prediction-Based Protein−Ligand Blind Docking 发表于Journal of Chemical Information and Modeling&#xff0c;第一作者为 Jie Du&#xff0c;通讯作者为 Manning Wang&#xff0c;研究团队来自复旦大学。该研究提出一种新的基于口袋预测的蛋白质 - 配体盲…

VSCode C/C++ 开发环境完整配置及常见问题(自用)

这里主要记录了一些与配置相关的内容。由于网上教程众多&#xff0c;部分解决方法并不能完全契合我遇到的问题&#xff0c;因此我选择以自己偏好的方式&#xff0c;对 VSCode 进行完整的配置&#xff0c;并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…

系统漏洞扫描服务:安全风险识别与防护指南

系统安全的关键在于漏洞扫描服务&#xff0c;此服务能迅速发现潜在的安全风险。借助专业的扫描工具和技术&#xff0c;它确保系统稳定运作。以下将简要介绍这一服务的主要特点。 扫描原理 系统漏洞扫描服务依赖两种主要手段&#xff1a;一是通过漏洞数据库进行匹配&#xff0…

MVC(Model-View-Controller)framework using Python ,Tkinter and SQLite

1.项目结构 sql: CREATE TABLE IF NOT EXISTS School (SchoolId TEXT not null, SchoolName TEXT NOT NULL,SchoolTelNo TEXT NOT NULL) 整体思路 Model&#xff1a;负责与 SQLite 数据库进行交互&#xff0c;包括创建表、插入、删除、更新和查询数据等操作。View&#xff1…