当前位置:网站首页>[go ~ 0 to 1] read, write and create files on the sixth day
[go ~ 0 to 1] read, write and create files on the sixth day
2022-07-04 18:42:00 【Autumn sunset】
1. Opening and closing of files
1.1 os.open
os.open Function can open a file call close() Method Close file
// Open file
open, err := os.Open("./1.text")
if err != nil {
// Print exception information
fmt.Println("open file err", err)
}
fmt.Println(" File acquisition completed ")
// No exception occurred , Close file
open.Close()
To prevent forgetting to close the file , Usually, the code to close the file is written in defer in
// Open file
open, err := os.Open("./1.text")
defer func() {
if open != nil {
// Close file
open.Close()
}
}()
if err != nil {
// Print exception information
fmt.Println("open file err", err)
}
fmt.Println(" File acquisition completed ")
1.2 os.OpenFile() Open file in specified mode
func OpenFile(name string, flag int, perm FileMode) (*File, error) {
...
}
among :
name: The name of the file to open flag: Open file mode . There are several modes :
Pattern | meaning |
---|---|
os.O_WRONLY | Just write |
os.O_CREATE | create a file |
os.O_RDONLY | read-only |
os.O_RDWR | Reading and writing |
os.O_TRUNC | Empty |
os.O_APPEND | Additional |
perm: File permissions , An octal number .r( read )04,w( Write )02,x( perform )01.
2. File reading
2.1 Read the data in the file by opening the file
// First you need to open a file
open, err := os.Open("./1.text")
defer func() {
e := recover()
if e != nil {
fmt.Println(" An exception occurred when opening the file ", e)
}
}()
if err != nil {
// If there is any abnormality There's no need to go down Throw out
panic(err)
}
// If there is no abnormality
// establish Byte slice
bytes := make([]byte, 1024)
defer func() {
e := recover()
if e != nil {
fmt.Println(" An exception occurred while reading the file ", e)
}
}()
for {
// Circle reading
_, err := open.Read(bytes)
if err != nil {
panic(err)
}
// Print the results
fmt.Println(string(bytes))
}
2.2 Use bufio Read the whole line of the file
bufio Is in file It encapsulates a layer of API , Support more functions
// Similarly, first open a file
file, err := os.Open("./1.text")
defer recover()
if err != nil {
panic(" An exception occurred while opening the file ")
}
// Encapsulated in the bufio
reader := bufio.NewReader(file)
defer recover()
for {
// Read the specified string and change to another line
line, _, err := reader.ReadLine()
if err != nil {
if err == io.EOF {
fmt.Println(" The file is read and written ")
break
}
panic(" File reading exception ")
}
fmt.Println(string(line))
}
fmt.Println(" End of program running ")
func main() {
file, err := os.OpenFile("xx.txt", os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
}
2.3 ioutil Read the entire file at once
3. Write file operation
Whether it is file reading or file writing You need to open the file first Do it again
3.1 file.Write And file.WriteString
// So let's open the file O_RDWR read-write permission O_TRUNC Empty files 0 Start with octal 666 Express Current user Current group Other users Read and write permissions
file, err := os.OpenFile("1.text", os.O_RDWR|os.O_TRUNC, 0666)
if err != nil {
fmt.Printf(" Exception in opening file %v", err)
}
defer file.Close()
// return Bytes written
write, err := file.Write([]byte(" Test file write \n"))
file.WriteString(" Write the entire string at once ")
if err != nil {
fmt.Println(err)
}
fmt.Println(write)
3.2 bufio.NewWriter
Use bufio Be sure to call refresh
// Based on cache operation
file, err := os.OpenFile("2.text", os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0666)
if err != nil {
panic(err)
}
defer func() {
file.Close()
if e := recover(); e != nil {
fmt.Printf(" abnormal : Exception in opening file %v", e)
}
}()
// Use bufio Based on cache operation io flow
// Need to One io Interface package Writer Interface implementation class and file It's time to Method
writer := bufio.NewWriter(file)
writer.WriteString(" Write cache string contents 2")
// You need to refresh the data in the cache to the hard disk
writer.Flush()
3.3 ioUtil Tool class
// Use tool class Open file , Write the file at one go
err := ioutil.WriteFile("3.text", []byte(" Tool class writes content "), 0666)
if err != nil {
fmt.Println(" The program runs abnormally ", err)
}
边栏推荐
- DB-Engines 2022年7月数据库排行榜:Microsoft SQL Server 大涨,Oracle 大跌
- 一直以为做报表只能用EXCEL和PPT,直到我看到了这套模板(附模板)
- Face_ Attendance statistics of recognition face recognition
- [2022 Jiangxi graduate mathematical modeling] curling movement idea analysis and code implementation
- Scala基础教程--16--泛型
- 庆贺!科蓝SUNDB与中创软件完成七大产品的兼容性适配
- 字节跳动Dev Better技术沙龙成功举办,携手华泰分享Web研发效能提升经验
- 【2022年江西省研究生数学建模】冰壶运动 思路分析及代码实现
- Journal des problèmes de brosse à boutons de force / day6 / 6.28
- 力扣刷题日记/day7/6.30
猜你喜欢
Make a grenade with 3DMAX
激进技术派 vs 项目保守派的微服务架构之争
Li Kou brush question diary /day7/2022.6.29
Li Kou brush question diary /day4/6.26
With an estimated value of 90billion, the IPO of super chip is coming
What if the self incrementing ID of online MySQL is exhausted?
学习路之PHP--phpstudy创建项目时“hosts文件不存在或被阻止打开”
Machine learning concept drift detection method (Apria)
表情包坑惨职场人
机器学习概念漂移检测方法(Aporia)
随机推荐
蓝桥:合根植物
MySQL常用增删改查操作(CRUD)
I always thought that excel and PPT could only be used for making statements until I saw this set of templates (attached)
删除二叉搜索树中的节点附图详解
【2022年江西省研究生数学建模】冰壶运动 思路分析及代码实现
Li Kou brush question diary /day6/6.28
Unity makes revolving door, sliding door, cabinet door drawer, click the effect of automatic door opening and closing, and automatically play the sound effect (with editor extension code)
Li Kou brush question diary /day1/2022.6.23
Li Kou brush question diary /day5/2022.6.27
Li Kou brush question diary /day7/6.30
I wrote a learning and practice tutorial for beginners!
Scala基础教程--19--Actor
With an estimated value of 90billion, the IPO of super chip is coming
Wireshark抓包TLS协议栏显示版本不一致问题
[go language question brushing chapter] go conclusion chapter | introduction to functions, structures, interfaces, and errors
【210】PHP 定界符的用法
How to modify icons in VBS or VBE
Why are some online concerts always weird?
[daily question] 871 Minimum refueling times
[211] go handles the detailed documents of Excel library