在上一篇文章中,我们介绍了常用的文件读写操作,今天接着来研究一下,除了读写以外的其他常见文件操作。

一、创建目录:

package main

import (
"fmt"
"os"
) func main() {
// 创建单个目录
os.Mkdir("go", os.ModePerm) // 创建多级目录
os.MkdirAll("go/lang", os.ModePerm) // 返回FileInfo实例
info, _ := os.Stat("go/lang") printFileInfo(info)
} // 显示文件信息
func printFileInfo(info os.FileInfo) {
fmt.Printf("name: %v \n", info.Name()) // 文件名
fmt.Printf("size: %v \n", info.Size()) // 文件大小
fmt.Printf("mode: %v \n", info.Mode()) // 文件权限
fmt.Printf("is dir: %v \n", info.IsDir()) // 是否为目录类型
fmt.Printf("modify time: %v \n", info.ModTime()) // 最后修改时间
}

os.Mkdir() 方法只能创建单个目录,而 os.MkdirAll() 可以创建多级目录。

最后我们使用 os.State() 方法获取目录或文件的描述对象,通过这个对象,我们可以得到目录或文件的各种常用信息。

二、检测目录或文件是否存在:

package main

import (
"fmt"
"os"
) func main() {
path := "go/lang/test.txt" // 返回FileInfo实例
info, err := os.Stat(path) // 检测文件或目录是否存在
if (os.IsNotExist(err)) {
// 创建文件
os.Create(path) // 重新获取FileInfo
info, _ = os.Stat(path)
} printFileInfo(info)
} // 显示文件信息
func printFileInfo(info os.FileInfo) {
fmt.Printf("name: %v \n", info.Name())
fmt.Printf("size: %v \n", info.Size())
fmt.Printf("mode: %v \n", info.Mode())
fmt.Printf("is dir: %v \n", info.IsDir())
fmt.Printf("modify time: %v \n", info.ModTime())
}

如果 err 的值为 nil,则表示文件存在,可完成后续的操作。

如果要判断文件不存在,则要通过 os.isNotExist(err) 方法来检测。

三、列举目录下的所有文件:

package main

import (
"fmt"
"io/ioutil"
"path"
) func main() {
dirPath := "go/lang" // 利用ioutil读取目录
files, _ := ioutil.ReadDir(dirPath) // 遍历目录
for _, fileInfo := range files {
fileName := fileInfo.Name() // 拼接路径
filePath := path.Join(dirPath, fileName) fmt.Println(filePath)
}
}

ioutil.ReadDir() 方法的完整签名是:func ReadDir(dirname string) ([]os.FileInfo, error),它返回一个 os.FileInfo 类型的切片,我们可以遍历这个结果,逐个处理目录下的每一个文件。

如果遍历的过程中遇到子目录,我们可以通过 fileInfo.IsDir() 来检测,如果检测结果是目录,则再进行递归调用即可。

值得一提的是,path/filepath 包提供了遍历多级目录的方法,下面我们演示一下:

package main

import (
"fmt"
"path/filepath"
"os"
) func main() {
dirPath := "go" filepath.Walk(dirPath, func(path string, fileInfo os.FileInfo, err error) error {
if fileInfo == nil {
return err
} isDir := fileInfo.IsDir() fmt.Println(path, "is dir?", isDir) return nil
})
}

四、重命名文件:

package main

import (
"os"
) func main() {
// 对文件重命名
os.Rename("go/lang/test.txt", "go/lang/test2.txt")
}

五、移除目录或文件:

package main

import (
"os"
) func main() {
// 移除文件或空目录
os.Remove("go/lang/test2.txt")
// 移除文件或目录
os.RemoveAll("go")
}

os.Remove() 方法可以移除单个文件或空目录,如果想移除非空目录,则需要调用 os.RemoveAll() 方法来完成。

关于文件的操作方式还有很多,今天就先介绍到这里吧,后续有时间再补充。

Golang: 读写之外的其他文件操作的更多相关文章

  1. golang中的文件操作

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

  2. golang读写文件

    1. 标准输入输出 os提供了标准输入输出文件: Stdin = NewFile(uintptr(syscall.Stdin), "/dev/stdin") Stdout = Ne ...

  3. Golang文件操作整理

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

  4. C语言的fopen函数(文件操作/读写)

    头文件:#include <stdio.h> fopen()是一个常用的函数,用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, c ...

  5. Delphi的文件操作(定义,关联,打开,读写,关闭)

    参考自:http://www.cnblogs.com/railgunman/articles/1800318.html Delphi 中默认有input 和 output 两个文件变量,使用可以不用定 ...

  6. golang文件操作

    一.读写文件 1.读文件操作 os.File 封装所有文件相关操作 例子: package main import ( "fmt" "os" "io/ ...

  7. python之文件的读写和文件目录以及文件夹的操作实现代码

    这篇文章主要介绍了python之文件的读写和文件目录以及文件夹的操作实现代码,需要的朋友可以参考下 为了安全起见,最好还是给打开的文件对象指定一个名字,这样在完成操作之后可以迅速关闭文件,防止一些无用 ...

  8. pytthon—day8 读写模式的结合、文件操作模式、with完成文本文件复制、游标操作

    一.读写模式的结合 w:写指没有新建文件,有文件就清空 w=open('1.txt','w',encoding='utf-8') w.write('000\n') 在写入数据时,需要及时处理内存空间, ...

  9. Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化

    IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从 ...

随机推荐

  1. ESA2GJK1DH1K基础篇: 测试APP使用SmartConfig绑定Wi-Fi 设备并控制设备

    前言 实现功能概要 STM32控制WI-Fi模块以AT指令TCP透传方式连接MQTT服务器, 实现MQTT通信控制. 测试准备工作(详细下载步骤请参考 硬件使用说明 ) 一,下载单片机程序 二,安装A ...

  2. 8-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案安全篇(Apache 配置SSL,HTTPS连接)

    https://www.cnblogs.com/yangfengwu/p/10947423.html 和当时配置MQTT差不多,去下载证书文件   https://www.cnblogs.com/ya ...

  3. 什么是ES5?js中的'use strict'是什么?目的是什么?

    什么是ES5? ECMA Script5:ECMA(欧洲计算机制造联合会)的第五次改版,2009年. js中的'use strict'是什么? js的严格模式 目的: ①添加更多报错的场合,消除代码的 ...

  4. 深入js系列-环境

    javascript运行环境 js如果只在引擎中运行,它会严格遵循并且可以预测的,但是js几乎都在宿主环境中运行,浏览器或者Node环境 ECMAScript中的Annex B 介绍了浏览器兼容性问题 ...

  5. 关于央行数字货币DCEP的几个特点的思考(转)

    近期,央行即将推出数字货币,无论在金融领域还是在资本市场,央行数字货币这一话题都被炒的很火热.央行研发的数字货币叫做DCEP(DC,DigitalCurrency,是数字货币:EP,Electroni ...

  6. 修改mysql存储过程或函数的定义着

    以root用户登录mysql控制台 (1)首先查询 mysql> select definer from mysql.proc; (2)然后根据条件进行更新 update mysql.proc ...

  7. Windows设置国内源阿里云镜像加速与离线安装pip包的方法

    Windows设置国内源阿里云镜像加速1.先在 windows “文件资源管理器” 地址栏 输入 %APPDATA% 按回车,打开程序自定义设置文件夹然后,创建名为 pip 的文件夹,用于存放 pip ...

  8. C#调用摄像头(AForge)实现扫描条码解析(Zxing)功能

    网上找了很多代码,都比较零散,以下代码纯自己手写,经过测试.下面有链接,下载后可以直接使用. 介绍: 自动识别:点击Start按钮会调用PC摄像头,代码内置Timer,会每100毫秒识别一下当前摄像头 ...

  9. Linux重启Mysql命令

  10. windows版mysql安装

    https://blog.csdn.net/ycxzuoxin/article/details/80908447