一、文件操作的基本API

func main() {
//绝对路径
fileInfo , err := os.Stat("E:/a.txt")
fileInfo , err = os.Stat("E:/")
if err !=nil {
fmt.Println("err:" , err.Error())
} else {
fmt.Printf("%T \n" , fileInfo)
fmt.Printf("%v \n" , fileInfo)
//文件名
fmt.Println(fileInfo.Name())
//是否是目录
fmt.Println(fileInfo.IsDir())
//文件尺寸大小
fmt.Println(fileInfo.Size())
//mode 权限
fmt.Println(fileInfo.Mode())
//文件最后修改时间
fmt.Println(fileInfo.ModTime())
}
}

文件路径:

  • 1、绝对路径:absolute
  • 2、相对路径:relative 都是相当于当前的工程  (.当前目录   ..上一层)

(1)、判断是否是绝对路径filepath.IsAbs()
(2)、获取相对路径filepath.Rel()
(3)、获取绝对路径filepath.Abs()
(4)、拼接路径path.Join()

文件操作:
1.创建文件夹,如果文件夹存在,创建失败

  • os.MKdir()
  • os.MKdirAll()

2.创建文件:如果文件存在,会覆盖

  • os.Create()-->*file

3.打开文件:

  • os.Open(filename)
  • os.OpenFile(filename,mode,perm)

4.关闭文件:

  • file.Close()

5.删除:

  • os.Remove()
  • os.RemoveAll()
package main

import (
"os"
"fmt"
) func main() {
/*
文件操作:
1.创建文件夹,如果文件夹存在,创建失败
os.MKdir()
os.MKdirAll() 2.创建文件:如果文件存在,会覆盖
os.Create()-->*file 3.打开文件:
os.Open(filename)
os.OpenFile(filename,mode,perm)
4.关闭文件:
file.Close()
5.删除:
os.Remove()
os.RemoveAll()
*/
// 1、创建目录
fileName1 := "./test1"
err := os.Mkdir(fileName1, os.ModePerm)
if err != nil {
fmt.Println("err:", err.Error())
} else {
fmt.Printf("%s 目录创建成功!\n", fileName1)
} fileName2 := "./test2/abc/xyz"
err = os.MkdirAll(fileName2, os.ModePerm)
if err != nil {
fmt.Println("err:", err.Error())
} else {
fmt.Printf("%s 目录创建成功!\n", fileName2)
} //2、创建文件.如果文件已经存在,则文件被覆盖
fileName3 := "./test1/abc.txt"
file1, err := os.Create(fileName3)
if err != nil {
fmt.Println("err:", err.Error())
} else {
fmt.Printf("%s 创建成功!%v \n", fileName3, file1)
} // 3、打开文件
file2, err := os.Open(fileName3)
if err != nil {
fmt.Println("err:", err.Error())
} else {
fmt.Printf("%s 打开成功!%v \n", fileName3, file2)
} /*
第一个参数:文件名称
第二个参数:文件的打开方式
O_RDONLY:只读模式(read-only)
O_WRONLY:只写模式(write-only)
O_RDWR:读写模式(read-write)
O_APPEND:追加模式(append)
O_CREATE:文件不存在就创建(create a new file if none exists.)
第三个参数:文件的权限:文件不存在创建文件,需要指定权限
*/
fileName4 := "./test1/abc2.txt"
file4, err := os.OpenFile(fileName4, os.O_RDWR|os.O_CREATE, os.ModePerm)
if err != nil {
fmt.Println("err:", err.Error())
} else {
fmt.Printf("%s 打开成功!%v \n", fileName4, file4)
} //4、关闭文件,程序与文件的联系断开
file4.Close() // 5、删除文件和目录
fileName5 := "./test1"
err = os.Remove(fileName5)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s 删除成功!" , fileName5)
} err = os.RemoveAll(fileName5)
if err != nil {
fmt.Println(err)
} else {
fmt.Printf("%s 删除成功!" , fileName5)
}
}

文件读写 

/**
2.读取文件file.Read([]byte)-->n,err 从文件中开始读取数据,存入到byte切片中,返回值n是本次实际读取的数据量如果读取到文件末尾,n为0,err为EOF:end of file
*/
func readFile(fileName string){
file2,err:=os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, os.ModePerm)
if err!=nil{
fmt.Println(file2);
}else {
bs:=make([]byte,,*);
n:= -;
str:="";
for{
n,err=file2.Read(bs);
fmt.Printf("n:%v \n",n)
if n==||err==io.EOF{
fmt.Println("read file end")
break;
}
str= strings.Join([]string{str,string(bs[:n])},"")
}
fmt.Println(str)
}
//3、关闭文件
file2.Close()
}
func writeFile(fileName string){
str:="I Love China 我爱中国";
bs:=[]byte(str);
file2,err:=os.OpenFile(fileName, os.O_RDWR|os.O_CREATE, os.ModePerm)
if err!=nil{
fmt.Println(file2);
}else {
file2.Write(bs);
}
file2.Close();
}

二、ioutil 包

/*
ioutil包:
ReadFile() //读取文件中的所有的数据,返回读取的字节数组
WriteFile() //向指定文件写入数据,如果文件不存在,则创建文件,写入数据之前清空文件
ReadDir() //读取一个目录下的子内容:子文件和子目录,但是仅有一层
TempDir() //在当前目录下,创建一个以指定字符串为前缀的临时文件夹,并返回文件夹路径
TempFile() //在当前目录下,创建一个以指定字符串为前缀的文件,并以读写模式打开文件,并返回os.File指针对象
*/

package main

import (
"io/ioutil"
"fmt"
"os"
) func main() {
/*
ioutil包:
ReadFile() //读取文件中的所有的数据,返回读取的字节数组
WriteFile() //向指定文件写入数据,如果文件不存在,则创建文件,写入数据之前清空文件
ReadDir() //读取一个目录下的子内容:子文件和子目录,但是仅有一层
TempDir() //在当前目录下,创建一个以指定字符串为前缀的临时文件夹,并返回文件夹路径
TempFile() //在当前目录下,创建一个以指定字符串为前缀的文件,并以读写模式打开文件,并返回os.File指针对象
*/
//1、ReadFile() //读取文件中的所有的数据,返回读取的字节数组
fileName1 := "./files/blockchain.txt"
data, err := ioutil.ReadFile(fileName1)
if err != nil {
fmt.Println("文件打开异常", err.Error())
} else {
fmt.Println(string(data))
} //2、WriteFile() //向指定文件写入数据,如果文件不存在,则创建文件,写入数据之前清空文件
fileName2 := "./files/xyz.txt"
s1 := "Steven陪你学区块链"
err = ioutil.WriteFile(fileName2, []byte(s1), )
if err != nil {
fmt.Println("写入文件异常", err.Error())
} else {
fmt.Println("文件写入OK!")
} //3、文件拷贝
err = ioutil.WriteFile(fileName2 , data , os.ModePerm)
if err != nil {
fmt.Println("文件拷贝异常", err.Error())
} else {
fmt.Println("文件拷贝成功!")
} //4、ReadDir() //读取一个目录下的子内容:子文件和子目录,但是仅有一层
dirName := "./"
fileInfos , err := ioutil.ReadDir(dirName)
if err != nil {
fmt.Println("目录遍历异常", err.Error())
} else {
for i , v := range fileInfos {
fmt.Println(i , v.Name() , v.IsDir() , v.Size() , v.ModTime())
}
} //5、TempDir() //在当前目录下,创建一个以指定字符串为前缀的临时文件夹,并返回文件夹路径
filename , err := ioutil.TempDir("./" , "temp")
if err != nil {
fmt.Println("创建目录失败" , err.Error())
} else {
fmt.Println(filename)
} //6、TempFile() //在当前目录下,创建一个以指定字符串为前缀的文件,并以读写模式打开文件,并返回os.File指针对象
file1 , err := ioutil.TempFile(filename , "temp")
if err != nil {
fmt.Println("创建文件失败" , err.Error())
} else {
file1.WriteString("写入内容:" + file1.Name())
}
file1.Close()
}

GO基础之文件操作的更多相关文章

  1. python基础篇(文件操作)

    Python基础篇(文件操作) 一.初始文件操作 使用python来读写文件是非常简单的操作. 我们使用open()函数来打开一个文件, 获取到文件句柄. 然后通过文件句柄就可以进行各种各样的操作了. ...

  2. Go语言基础之文件操作

    本文主要介绍了Go语言中文件读写的相关操作. 文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件. 打开和关闭文件 os.Open()函数能够打开一个 ...

  3. GO学习-(16) Go语言基础之文件操作

    Go语言文件操作 本文主要介绍了Go语言中文件读写的相关操作. 文件是什么? 计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件. 打开和关闭文件 os.Open( ...

  4. python基础之文件操作

    对于文件操作中最简单的操作就是使用print函数将文件输出到屏幕中,但是这种操作并不能是文件保存到磁盘中去,如果下调用该数据还的重新输入等. 而在python中提供了必要的函数和方法进行默认情况下的文 ...

  5. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  6. git初体验(二)基础git文件操作

    文件操作续 忽略一些文件 只需在主目录下建立".gitignore"文件,注意新建的是文件而非文件夹,在win窗口中不能建立以.开头的文件,只能在dos下: E:\knowcars ...

  7. php基础知识--文件操作

    文件操作 文件 广义角度: 任何一个在磁盘上可以看到的符号(包含真正的文件及文件夹) 狭义角度: 真实存储数据的载体(不包含文件夹, 如doc文件,txt文件等) 文件操作: 对文件的增删改查 文件分 ...

  8. Day3 Python基础学习——文件操作、函数

    一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...

  9. python基础14_文件操作

    文件操作,通常是打开,读,写,追加等.主要涉及 编码 的问题. #!/usr/bin/env python # coding:utf-8 ## open实际上是从OS请求,得到文件句柄 f = ope ...

  10. (Python基础)文件操作

    对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下 命名为7 years Once I was seven years old my momma t ...

随机推荐

  1. multipart/form-data 文件上传表单中 传递参数无法获取的原因!

    1.什么是multipart/form-data 首先我们需要明白在html中的enctype属性, enctype:规定了form表单在发送到服务器时候编码方式.他有如下的三个值. ①applica ...

  2. CF 1130A 1130B 1130C1129A1 1129A2 1129B(Round542A B C D1 D2 E)题解

    A : Be Positive 题目地址:https://codeforces.com/problemset/problem/1130/A 题解:让你求是否满足一个d使得数列长为n的a数组的每个数除以 ...

  3. Mac ifconfig 详解(ifconfig detail)-- 外婆送来的丁香(Grandma's clove)

    引言 Intro 图片源链:https://pixnio.com/zh/%E6%A4%8D%E7%89%A9/%E8%8A%B1/%E4%B8%81%E9%A6%99%E8%8A%B1-%E5%8F% ...

  4. Grafana基础

    一.Grafana基础 Grafana是一个开源的指标量监测和可视化工具.官方网站为:https://grafana.com/, 常用于展示基础设施的时序数据和应用程序运行分析.Grafana的das ...

  5. Redis中的Java分布式缓存

    为什么在分布式Java应用程序中使用缓存?今天学习了两节优锐课讲解分布式缓存的内容,收获颇多,分享给大家. 在提高应用程序的速度和性能时,每毫秒都是至关重要的.例如,根据Google的一项研究,如果网 ...

  6. kubernetes-集群备份和恢复

    一.备份   思路: ①集群运行中etcd数据备份到磁盘上 ②kubeasz项目创建的集群,需要备份CA证书文件,以及ansible的hosts文件   [deploy节点操作] 1:创建存放备份文件 ...

  7. python学习-list

    # 数据类型之 列表 有顺序.# 关键字:list# 语法 :[] 数据之间用,隔开.列表当中的数据,可以是任意类型.数值是可以重复的.a = []b = ["魔王", " ...

  8. round分析

    Python 所谓的奇进偶弃,因为浮点数的表示在计算机中并不准确,用的时候可能要注意一下. 测试如下 print() 由运行得出结论: 当小数点左边为偶数:小数点右边X<6,舍 当小数点左边为偶 ...

  9. 我的 FPGA 学习历程(15)—— Verilog 的 always 语句综合

    在本篇里,我们讨论 Verilog 语言的综合问题,Verilog HDL (Hardware Description Language) 中文名为硬件描述语言,而不是硬件设计语言.这个名称提醒我们是 ...

  10. dev gridcontrol绘制页脚

    gridView.OptionsView.ShowFooter = true;//启用显示页脚 //索引为1的列 gridView.Columns[1].SummaryItem.DisplayForm ...