导入“os”包,创建文件,读写文件的函数都在改包。
指定创建的文件存放路径以及文件名。
执行Create( )函数,进行文件创建。
关闭文件。
package main
import (
"fmt"
"os"
)
func main() {
//创建文件,需要指定文件的存放路径以及文件名称
//file 为文件指针
file, err := os.Create("D:/test/a.txt")
//判断是否出现异常
if err != nil {
fmt.Println(err)
//文件错误,也要关闭文件
//file.Close()
return
}
defer file.Close() //延迟执行
//对创建的文件进行相关的操作
关闭
//file.Close()
}
不会追加,会清空文件然后添加数据
package main
import (
"fmt"
"os"
)
func main() {
//创建文件,需要指定文件的存放路径以及文件名称
//file 为文件指针
file, err := os.Create("D:/test/a.txt")
//判断是否出现异常
if err != nil {
fmt.Println(err)
//文件错误,也要关闭文件
//file.Close()
return
}
defer file.Close() //延迟执行
// 数据长度
n, err := file.WriteString("cccc") //写入ccc然后再写成ddd,只会出现dddd并不会追加
if err != nil {
fmt.Println(err)
return
}
fmt.Println(n) //n为数据的长度
}
不会追加,会清空文件然后添加数据
package main
import (
"fmt"
"os"
)
func main() {
//创建文件,需要指定文件的存放路径以及文件名称
//file 为文件指针
file, err := os.Create("D:/test/c.txt")
//判断是否出现异常
if err != nil {
fmt.Println(err)
//文件错误,也要关闭文件
//file.Close()
return
}
defer file.Close() //延迟执行
var str string = "Hello1 world"
n, err := file.Write([]byte(str)) //需要将字符串转换为字节切片
if err != nil {
return
}
fmt.Println(n) //n为数据的长度
}
第一个参数为在逛光标最后一个位置然后执行得到0
seek, err := file.Seek(0, io.SeekEnd) //把光标定位到文件中原有内容的后面,返回文件原油有数据的长度
package main
import (
"fmt"
"io"
"os"
)
func main() {
//创建文件,需要指定文件的存放路径以及文件名称
//file 为文件指针
file, err := os.Create("D:/test/a.txt")
//判断是否出现异常
if err != nil {
fmt.Println(err)
//文件错误,也要关闭文件
//file.Close()
return
}
defer file.Close() //延迟执行
file.WriteString("hello world")
var str string = "aaa"
seek, err := file.Seek(0, io.SeekEnd) //把光标定位到文件中原有内容的后面
if err != nil {
return
}
//第一个参数 字节切片,第二个参数指定位置写入数据
n, err := file.WriteAt([]byte(str), seek) //单独写入,也不会追加
if err != nil {
fmt.Println(err)
return
}
fmt.Println(n) //n为数据的长度
}
OpenFile( )这个函数有三个参数:
第一个参数表示:打开文件的路径
第二个参数表示:模式,常见的模式有
O_RDONLY(只读模式),O_WRONLY(只写模式), O_RDWR( 可读可写模式),O_APPEND(追加模式)。
第三个参数表示: 权限,取值范围(0-7)
表示如下:
0:没有任何权限
1:执行权限(如果是可执行文件,是可以运行的)
2:写权限
3: 写权限与执行权限
4:读权限
5: 读权限与执行权限
6: 读权限与写权限
7: 读权限,写权限,执行权限
package main
import (
"fmt"
"os"
)
func main() {
//创建文件,需要指定文件的存放路径以及文件名称
//file 为文件指针
//file, err := os.OpenFile("D:/test/a.txt", os.O_APPEND, 6)//追加
file, err := os.OpenFile("D:/test/a.txt", os.O_RDWR, 6) //可读可写,从文件最开始的位置开始写入的
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
//通过文件指针向文件中写入数据或者读写数据
writeString, err := file.WriteString("ziyeye")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(writeString)
}
读取文件的基本流程如下:
打开要读取的文件
对文件进行读取
关闭文件
package main
import (
"fmt"
"io"
"os"
)
func main() {
//打开要读取的文件
file, err := os.Open("D:/test/a.txt") //只读方式
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
//进行文件内容读取
//定义一个字符类型切片,存储从文件中读取的数据
buffer := make([]byte, 1024*2)
n, err := file.Read(buffer)
if err != nil {
if err == io.EOF {
fmt.Println(err)
}
return
}
//关闭文件
fmt.Println(n)
fmt.Println(string(buffer[:n]))
}
package main
import (
"fmt"
"io"
"os"
)
func main() {
//打开要读取的文件
file, err := os.Open("D:/test/a.txt") //只读方式
if err != nil {
fmt.Println(err)
return
}
defer file.Close()
//进行文件内容读取
//定义一个字符类型切片,存储从文件中读取的数据
buffer := make([]byte, 10)
for true {
n, err := file.Read(buffer)
if err != nil {
if err == io.EOF { //表示到达文件末尾了
fmt.Println(err)
break
}
}
fmt.Println(n)
fmt.Println(string(buffer[:n]))
}
//关闭文件
}
文件拷贝,将已有的文件复制一份,同时重新命名。
package main
import (
"fmt"
"io"
"os"
)
func main() {
//打开原有文件
file, err := os.Open("D:/test/a.txt")
if err != nil {
fmt.Println(err)
}
defer file.Close()
//创建一个新的文件
file2, err := os.Create("D:/test/zi.txt")
if err != nil {
fmt.Println(err)
}
defer file2.Close()
//将原有文件中的内容读取出来,然后写入到新的文件中
buffer := make([]byte, 10)
for true {
n, err := file.Read(buffer)
if err != nil {
if err == io.EOF {
fmt.Println(err)
break
}
fmt.Println(err)
}
file2.Write(buffer[:n])
}
//关闭文件
}
Contains(s,substr string) bool
功能:字符串s中是否包含substr返回bool值
Join(a[]string,sep string) string
功能:字符串连接,把切片 a通过sep连接起来
Index(s,sep string) int
功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1
Repeat(s string,count int) string
功能:重复s字符串count次,最后返回重复的字符串
Replace(s,old,new string,n int) string
功能:在s字符串吧old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换
Split(s,sep string)[]string
功能:把s字符串按照sep分隔,返回slice(切片)
Trim(s string,cutset string) string
功能:在s字符串的头部和尾部取出cutset指定的字符串
Fields(s string) [] string
功能:去除s字符串的空格符,并且按照空格分隔返回切片
package main
import (
"fmt"
"strings"
)
func main() {
var str string = "hellogo"
contains := strings.Contains(str, "go") //是否包含go 判断某个字符串是否在str中存在,如果存在返回true否则返回false
fmt.Println(contains) //true
contains = strings.Contains(str, "goo") //是否包含go
fmt.Println(contains) //false
str1 := []string{"abc", "hello", "world"}
join := strings.Join(str1, "|")
fmt.Println(join) //abc|hello|world
//Index 查找某个位置
var str2 string = "abcHello"
index := strings.Index(str2, "Hello") //判断Hello在str中出现的位置,注意位置从0开始计算
fmt.Println(index)
repeat := strings.Repeat("go", 3) //表示字符串go重复三次
fmt.Println(repeat) //gogogo
//Replace
str3 := "hello world"
replace := strings.Replace(str3, "l", "ye", 1) //负数如-1为全部替换 用新的字符串替换旧的字符串,第四个参数表示替换的次数
fmt.Println(replace) //heyelo world
//Split
str4 := "ziye@woaini@aini"
split := strings.Split(str4, "@")
fmt.Println(split) //[ziye woaini aini]
}
让用户输入一个日期格式,如:2018-01-02, 输出日期为2008年1月2日
package main
import (
"fmt"
"strings"
)
func main() {
//输入日期
fmt.Println("请输入日期,格式:年-月-日")
var str string
fmt.Scan(&str)
//按照-进行分隔
split := strings.Split(str, "-")
//输出指定的格式
fmt.Println(split[0] + "年" + split[1] + "月" + split[2] + "日")
}
让用户输入一句话,判断这句话中有没有“邪恶”,如果有“邪恶”就替换成“**”,然后输出。 如:老王很邪恶,输出后变成老王很xxx
package main
import (
"fmt"
"strings"
)
func main() {
//定义变量存储用户输入的一句话
fmt.Println("请输入一句话")
var str string
fmt.Scan(&str)
//判断用户输入的内容中是否有邪恶
if strings.Contains(str, "邪恶") {
str = strings.Replace(str, "邪恶", "**", -1)
}
//如果有,则进行替换
fmt.Println(str)
}
把其他类型的转换为字符串。
把字符串转换为其他类型
https://blog.csdn.net/qq_40432598/article/details/132702749?spm=1001.2014.3001.5502