一、读写文件

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文件操作的更多相关文章

  1. Golang文件操作整理

    基本操作 文件创建 创建文件的时候,一定要注意权限问题,一般默认的文件权限是 0666 关于权限的相关内容,具体可以参考鸟叔p141 这里还是再回顾下,文件属性 r w x r w x r w x,第 ...

  2. golang 文件操作

    package main import (     "bytes"     "fmt"     "io"     "os" ...

  3. GO语言的进阶之路-Golang字符串处理以及文件操作

    GO语言的进阶之路-Golang字符串处理以及文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们都知道Golang是一门强类型的语言,相比Python在处理一些并发问题也 ...

  4. golang中的文件操作

    一.文件的基本介绍 文件是数据源(保存数据的地方)的一种,比如经常使用的word文档,txt文件,excel文件都是文件.文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音等等. ...

  5. Golang字符串处理以及文件操作

    一.整数 1.int与uint的初值比较以及其大小. 1 /* 2 #!/usr/bin/env gorun 3 @author :xxxx 4 Blog:http://www.cnblogs.com ...

  6. golang基础知识之文件操作

    读取文件所有内容以及获得文件操作对象 package mainimport ( "bufio" "fmt" "io" "io/io ...

  7. golang之终端操作,文件操作

    终端操作 操作终端相关的文件句柄常量os.Stdin:标准输入os.Stdout:标准输出os.Stderr:标准错误输出 关于终端操作的代码例子: package main import " ...

  8. Golang: 读写之外的其他文件操作

    在上一篇文章中,我们介绍了常用的文件读写操作,今天接着来研究一下,除了读写以外的其他常见文件操作. 一.创建目录: package main import ( "fmt" &quo ...

  9. golang 之文件操作

    文件操作要理解一切皆文件. Go 在 os 中提供了文件的基本操作,包括通常意义的打开.创建.读写等操作,除此以外为了追求便捷以及性能上,Go 还在 io/ioutil 以及 bufio 提供一些其他 ...

随机推荐

  1. springboot~如何去掌握它(新手可以看看)

    springboot~如何去掌握它 主讲:仓储大叔 每讲40分钟 架构图 graph LR App-->A Web-->A A(zuul proxy)-->B(eureka serv ...

  2. C++ Sqlite3的基本使用

    |SQLite3简介  SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程. SQL语句是S ...

  3. 【Vue】 ----- 浅谈vue的生命周期

    一.概念 vue生命周期,又叫生命周期钩子函数,是组件从创建到销毁的过程. 二.主要的八大生命周期 1.首先,为方便观察每个周期的特点,我们模拟一个"one"组件的创建与销毁,并在 ...

  4. 从零开始学习iftop流量监控(找出服务器耗费流量最多的ip和端口)

    一.iftop是什么 iftop是类似于top的实时流量监控工具. 作用:监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等 官网:http://www.ex-parrot.com/~p ...

  5. JavaScript中的十个难点,你有必要知道。

    1. 立即执行函数 立即执行函数,即Immediately Invoked Function Expression (IIFE),正如它的名字,就是创建函数的同时立即执行.它没有绑定任何事件,也无需等 ...

  6. Android 之文件夹排序

    按文件名排序 /** * 按文件名排序 * @param filePath */ public static ArrayList<String> orderByName(String fi ...

  7. 华为7.0系统最简单激活xposed框架的流程

    对于喜欢搞机的哥们而言,很多时候会接触到Xposed框架及其种类繁多功能无敌的模块,对于5.0以下的系统版本,只要手机能获得root权限,安装和激活Xposed框架是异常简易的,但随着系统版本的不断更 ...

  8. canvas动态图标

    前言 canvas 强大的功能让它成为了 HTML5 中非常重要的部分,至于它是什么,这里就不需要我多作介绍了.而可视化图表,则是 canvas 强大功能的表现之一. 现在已经有了很多成熟的图表插件都 ...

  9. Spark RPC框架源码分析(一)简述

    Spark RPC系列: Spark RPC框架源码分析(一)运行时序 Spark RPC框架源码分析(二)运行时序 Spark RPC框架源码分析(三)运行时序 一. Spark rpc框架概述 S ...

  10. nginx常用场景

    1.浏览器缓存 server { listen 8083; server_name 127.0.0.1; sendfile on; access_log /var/log/nginx/static_s ...