golang文件操作
一、读写文件
1、读文件操作
os.File 封装所有文件相关操作
例子:
package main
import (
"fmt"
"os"
"io/ioutil"
"bufio"
"io"
) func main(){
file,err := os.Open("/etc/hosts")
if err != nil {
fmt.Println("error!")
}
fmt.Println("file",file) //获取的是指针 //
reader := bufio.NewReader(file)
for {
str,err := reader.ReadString('\n') //读到换行就结束
if err == io.EOF { //io.EOF表示文件结尾
break
}
fmt.Printf(str)
} err = file.Close() //关闭文件
if err != nil{
fmt.Println("file close error!",err)
} fmt.Println("======ioutil==========") //ioutil一次将整个文件读入到内存中,适合小文件
file2,err := ioutil.ReadFile("/etc/hosts")
fmt.Println(file2) //[]byte
fmt.Println(string(file2)) } ##结果####
file &{0xc42005c0f0}
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
======ioutil==========
[49 50 55 46 48 46 48 46 49 32 32 32 108 111 99 97 108 104 111 115 116 32 108 111 99 97 108 104 111 115 116 46 108 111 99 97 108 100 111 109 97 105 110 32 108 111 99 97 108 104 111 115 116 52 32 108 111 99 97 108 104 111 115 116 52 46 108 111 99 97 108 100 111 109 97 105 110 52 10 58 58 49 32 32 32 32 32 32 32 32 32 108 111 99 97 108 104 111 115 116 32 108 111 99 97 108 104 111 115 116 46 108 111 99 97 108 100 111 109 97 105 110 32 108 111 99 97 108 104 111 115 116 54 32 108 111 99 97 108 104 111 115 116 54 46 108 111 99 97 108 100 111 109 97 105 110 54 10]
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
2、文件写操作
os.OpenFile是一个一般性的文件打开函数,参数如下 (第一个参数是文件地址,第二个参数如下,可以组合使用,第三个参数是控制文件的权限)
os.O_CREATE 文件不存在就会创建
os.O_APPEND 以追加内容的形式添加
os.O_WRONLY 只写模式
os.O_RDONLY 只读模式
os.O_RDWR 读写模式
os.O_EXCL 和os.O_CREATE配合使用,文件必须不存在
os.O_SYNC 打开文件用于同步I/O
os.O_TRUNC 打开时清空文件
例子:
package main
import (
"fmt"
"bufio"
"os"
) func main(){
//创建新文件
filename := "/tmp/a.txt"
file,err := os.OpenFile(filename,os.O_WRONLY|os.O_CREATE,0600)
if err != nil {
fmt.Println("open file error",err)
} //及时关闭file句柄
defer file.Close()
//写入到缓存的*write
write := bufio.NewWriter(file)
write.WriteString("1\n")
write.WriteString("2\n")
//使用Flush方法,将数据写入到文件中
write.Flush()
//追加内容
file2,err := os.OpenFile("/etc/hosts",os.O_WRONLY|os.O_APPEND,0644)
if err != nil {
fmt.Println("open file error",err)
}
insert := bufio.NewWriter(file2)
insert.WriteString("==============go=======\n")
insert.Flush()
} ##结果####
[root@localhostgo_test]#ll /tmp/a.txt
-rw------- 1 root root 4 3月 21 14:27 /tmp/a.txt
[root@localhostgo_test]#cat /tmp/a.txt
1
2 [root@localhostgo_test]#cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
==============go=======
二、复制文件
代码:
package main import (
"fmt"
"io"
"os"
)
func main() {
CopyFile(os.Args[1], os.Args[2]) // os.Args[1]为目标文件,os.Args[2]为源文件
fmt.Println("复制完成")
}
func CopyFile(dstName, srcName string) (written int64, err error) {
src, err := os.Open(srcName)
if err != nil {
return
}
defer src.Close()
dst, err := os.OpenFile(dstName, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return
}
defer dst.Close()
return io.Copy(dst, src)
}
使用测试:
[root@localhostgo_test]#cat /tmp/a.txt
1
2
[root@localhostgo_test]#go run copy_file.go /tmp/copy_a.txt /tmp/a.txt
复制完成
[root@localhostgo_test]#cat /tmp/copy_a.txt
1
2
golang文件操作的更多相关文章
- Golang文件操作整理
基本操作 文件创建 创建文件的时候,一定要注意权限问题,一般默认的文件权限是 0666 关于权限的相关内容,具体可以参考鸟叔p141 这里还是再回顾下,文件属性 r w x r w x r w x,第 ...
- golang 文件操作
package main import ( "bytes" "fmt" "io" "os" ...
- GO语言的进阶之路-Golang字符串处理以及文件操作
GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...
- golang中的文件操作
一.文件的基本介绍 文件是数据源(保存数据的地方)的一种,比如经常使用的word文档,txt文件,excel文件都是文件.文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音等等. ...
- Golang字符串处理以及文件操作
一.整数 1.int与uint的初值比较以及其大小. 1 /* 2 #!/usr/bin/env gorun 3 @author :xxxx 4 Blog:http://www.cnblogs.com ...
- golang基础知识之文件操作
读取文件所有内容以及获得文件操作对象 package mainimport ( "bufio" "fmt" "io" "io/io ...
- golang之终端操作,文件操作
终端操作 操作终端相关的文件句柄常量os.Stdin:标准输入os.Stdout:标准输出os.Stderr:标准错误输出 关于终端操作的代码例子: package main import " ...
- Golang: 读写之外的其他文件操作
在上一篇文章中,我们介绍了常用的文件读写操作,今天接着来研究一下,除了读写以外的其他常见文件操作. 一.创建目录: package main import ( "fmt" &quo ...
- golang 之文件操作
文件操作要理解一切皆文件. Go 在 os 中提供了文件的基本操作,包括通常意义的打开.创建.读写等操作,除此以外为了追求便捷以及性能上,Go 还在 io/ioutil 以及 bufio 提供一些其他 ...
随机推荐
- Wolsey "强整数规划“ 建模的+Leapms实践——无产能批量问题
Wolsey "强整数规划“ 建模的+Leapms实践——无产能批量问题 <整数规划>[1]一书作者L. A. Wolsey对批量问题(Lot-sizing Problem)做了 ...
- JavaScript类型相关常用操作
JS数组,字符串,json互相转换 JS数组转字符串 使用数组自带的join方法可以把数组转化为字符串: let arr = [1,2,'uu']; let str = arr.join(','); ...
- 简单介绍shell编程四剑客之grep
概要:分别的作用 grep:文本过滤(模式:pattern)工具,grep,egrep,fgrep,擅长过滤. sed:stream editor 文本编辑工具:(流编辑器),擅长取行.替换. awk ...
- 原子操作&普通锁&读写锁
一:原子操作CAS(compare-and-swap) 原子操作分三步:读取addr的值,和old进行比较,如果相等,则将new赋值给*addr,他能保证这三步一起执行完成,叫原子操作也就是说它不能再 ...
- 取之有道——巧用Root权限 启动其他APP中的Activity
这次博主来分享一个很巧妙的办法来启动其他APP中Activity的方法. 首先说一下这样做的目的:最近博主在攻克一个技术难点,就是搞定某些三方系统中,对于应用权限的限制.为此给出用户指导,引导用户启动 ...
- Java基础-异常、断言
处理错误 如果Java程序运行期间出现了错误,并且由于出现错误导致某些操作没有完成,程序应该能够返回到一种安全状态,并能够让用户执行一些其他的命令:或者允许用户保存所有操作结果,并以妥善的方式终止程序 ...
- MySQL中SELECT语句简单使用
最近开始复习mysql,查漏补缺吧. 关于mysql 1.MySQL不区分大小写,但是在MySQL 4.1及之前的版本中,数据库名.表名.列名这些标识符默认是区分大小写的:在之后的版本中默认不区分大小 ...
- [C#学习笔记3]关于Main(string[ ] args)中args命令行参数
Main(string[] args)方法是C#程序的入口,程序从这里开始执行,在这里结束.C#代码逻辑要包含在一个类型(Type)中,游离的.全局的变量或函数是不存在的,这里的类型包括类(class ...
- Dynamics 365-OnPremise V9 安装系统要求
Dynamics 365 V9 OnPremise发布之后,博主率真地直接下载安装,首先就遇到了操作系统不支持的问题,但是通过CRM安装报错提示,发现给的链接参考信息也不对. document的链接调 ...
- python turtle 书写新年快乐
文章链接:https://mp.weixin.qq.com/s/xYSKH_KLYfooIoelJH02Cg 农历2018年的最后一篇文章,踏上回家的征途前,推荐一个Python的三方库turtle, ...