golang写入字符串文件_golang将字符串写入文件-程序员宅基地

技术标签: golang  

package main

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

// 一次性写入所有文件
func writeAllFile() {
	// 要写入的文件地址和名称 index.html
	filePath := "/test/file/write/index.html"
	// 要写入的文件内容
	content := "测试写入文件内容"
	// 这种方式写入文件,如果文件不存在则创建该文件
	// 如果文件已存在,则进行覆盖写入
	err := os.WriteFile(filePath, []byte(content), 0666)
	if err != nil {
		fmt.Printf("write file err, %v", err)
	}
	fmt.Println("write file success")
}

// 用带有缓存方式进行写入文件内容
// 创建文件,并写入
func createFileBuf() {
	filePath := "/test/file/write/create.html"
	// os.O_WRONLY write-only
	// os.O_CREATE 如果文件不存在则创建
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE, 0666)
	if err != nil {
		fmt.Printf("OpenFile() file err, %v", err)
	}
	// 关闭文件句柄
	defer file.Close()
	// 创建一个writer
	writer := bufio.NewWriter(file)
	content := "测试create.html写入文件\n"
	_, err = writer.WriteString(content)
	if err != nil {
		fmt.Printf("write file err, %v", err)
	}
	// 最后真正写入文件
	writer.Flush()
	fmt.Println("write file success")
}

// 追加写入文件内容
func appendFileBuf() {
	filePath := "/test/file/write/create.html"
	// os.APPEND 追加写入文件内容
	file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666)
	if err != nil {
		fmt.Printf("OpenFile() file err, %v", err)
	}
	// 关闭文件句柄
	defer file.Close()
	// 创建 writer
	writer := bufio.NewWriter(file)
	// 写入的文件内容
	content := "追加文件测试内容\n"
	_, err = writer.WriteString(content)
	if err != nil {
		fmt.Printf("append file err, %v", err)
	}
	writer.Flush()
	fmt.Println("append file success")
}

// 拷贝图片文件
func copyPic() bool {
	// 源文件
	srcFilePath := "/test/file/write/cover.jpg"
	// 拷贝后生成的文件
	dstFilePath := "/test/file/write/copy.jpg"
	// 打开源文件
	srcFile, err := os.Open(srcFilePath)
	if err != nil {
		fmt.Printf("open src file err, %v", err)
		return false
	}
	// 关闭源文件句柄
	defer srcFile.Close()
	// 获取源文件的 reader
	reader := bufio.NewReader(srcFile)
	// 创建目标文件
	dstFile, err := os.OpenFile(dstFilePath, os.O_WRONLY|os.O_CREATE, 0666)
	if err != nil {
		fmt.Printf("open dst file err, %v", err)
		return false
	}
	// 关闭目标文件句柄
	defer dstFile.Close()
	// 获取 writer
	writer := bufio.NewWriter(dstFile)
	// 进行文件拷贝
	_, err = io.Copy(writer, reader)
	if err != nil {
		fmt.Printf("copy file err, %v", err)
		return false
	}
	fmt.Println("copy file success")
	return true
}

// 使用 io/ioutil 包写入文件
func writeIoUtil() {
	// 写入的文件地址
	filePath := "/test/file/write/ioutil.html"
	// 写入的文件内容
	content := "测试写入文件,使用io/ioutil包进行文件的写入操作"
	err := ioutil.WriteFile(filePath, []byte(content), 0666)
	if err != nil {
		fmt.Printf("write file err, %v\n", err)
	}
	fmt.Println("write file success")
}

// 文件的写操作
func main() {
	// 一次性写入全部文件
	writeAllFile()
	// 创建文件并写入,以缓存方式
	createFileBuf()
	// 追加写入文件
	appendFileBuf()
	// 拷贝图片
	copyPic()
	// 使用 io/ioutil 进行文件写入
	writeIoUtil()
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_40880022/article/details/124245180

智能推荐

Scrapy爬虫实例教程(二)---数据存入MySQL-程序员宅基地

文章浏览阅读63次。书接上回 实例教程(一)本文将详细描述使用scrapy爬去左岸读书所有文章并存入本地MySql数据库中,文中所有操作都是建立在scrapy已经配置完毕,并且系统中已经安装了Mysql数据库(有权限操作数据库)。为了避免读者混淆,这里也使用tutorial作为scrapy project名称(工程的名字可以有读者自己定制)。1. 建立tutorial工程1 scrapy star...

Spring Boot集成Mybatis 常见错误二——NoSuchBeanDefinitionException UnsatisfiedDependencyException_加了mapperscan nosuchbeandefinitionexception-程序员宅基地

文章浏览阅读1.7k次。NoSuchBeanDefinitionException,报错了,剑客立即马不停蹄的去百度度娘,发现这个问题是没有找到bean类,此时,立即去bean类查看,发现没有问题,而且代码在别人的电脑上也能跑通,此时就立马着手是配置的问题,没有找到是没有扫描的问题。@SpringBootApplication//@EnableScheduling //开启定时器//@..._加了mapperscan nosuchbeandefinitionexception

js截取字符串处理 和 js 图片切换处理 _js 把字符串中的链接换成图片-程序员宅基地

文章浏览阅读2.4k次。js截取方式1、区别汉字和英文 //字符串截取function CutString(name, maxLength) { if (!maxLength) { maxLength = 20; } if (name == null || name.length < 1) { return ""; } va_js 把字符串中的链接换成图片

arduino使用oled代码_Arduino提高篇25—手势识别-程序员宅基地

文章浏览阅读457次。关注、星标公众号,不错过精彩内容编辑:Tony来源:公众号TonyCode随着科技的发展,人机交互也发生了翻天覆地的变化,从最开始的手动控制,到后来的遥控,再到语音识别以及图像识别。一切都是为了解放人类,毕竟能吵吵就不会动手对不对,现在都懒得吵吵了,图像识别分析就好。本篇我们来介绍高大尚的手势识别,用手比划就能进行控制了。 1 APDS-9960模块介绍APDS-9960是一个体积非常小..._oled引脚定义arduino代码

websocket 1006错误码-程序员宅基地

文章浏览阅读1.5w次,点赞2次,收藏10次。连接被服务器关闭原因:客户端授权没验证通过或被踢出_websocket 1006

大数据智慧数字电商第二课 工程搭建和模块开发_hbase-shaded-server-程序员宅基地

文章浏览阅读276次。实时数仓第2天讲义学习目标能够掌握Canal高可用环境搭建能够编写Flink程序解析Kafka中的ProtoBuf能够搭建flink实时ETL项目开发环境能够针对etl的业务处理进行封装公共接口Canal HA模式配置服务器端HA模式配置canal是支持HA的,其实现机制也是依赖zookeeper来实现的,用到的特性有watcher和EPHEMERAL节点(和session生命周期绑定),与HDFS的HA类似。canal的ha分为两部分,canal server和canal clien_hbase-shaded-server

随便推点

【Linux-ARM】安装 Java8_arm jdk1.8-程序员宅基地

文章浏览阅读2.3k次。Linux ARM 安装 Java_arm jdk1.8

STM32 F407 PWM模板_stm32f407pwm输入-程序员宅基地

文章浏览阅读2.9k次。void Pwm_Init(unsigned long Frequency, float DC1, float DC2, float DC3, float DC4){ TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; uint16_t TimerPerio_stm32f407pwm输入

在Caffe中调用TensorRT提供的MNIST model_"#include \"mnist_model.hpp"-程序员宅基地

文章浏览阅读2.5k次。在Caffe中调用TensorRT提供的MNIST model_"#include \"mnist_model.hpp"

angular跳转指定页面_angularjs项目的页面跳转如何实现(5种方法)-程序员宅基地

文章浏览阅读4.3k次。Angular页面传参有多种办法,根据不同用例,我举5种最常见的:1. 基于ui-router的页面跳转传参(1) 在AngularJS的app.js中用ui-router定义路由,比如现在有两个页面,一个页面(producers.html)放置了多个producers,点击其中一个目标,页面跳转到对应的producer页,同时将producerId这个参数传过去。.state('producer..._angular跳转页面

PHP中的php.ini文件详解-程序员宅基地

文章浏览阅读352次。2019独角兽企业重金招聘Python工程师标准>>> ..._php.ini详解

openGl 入门(一)_opengl入门-程序员宅基地

文章浏览阅读2.4k次。以问答的形式记录openGl 知识点_opengl入门

推荐文章

热门文章

相关标签