golang中文件以及文件夹路径相关操作
获取目录中所有文件
使用包:
io/ioutil
使用方法:
ioutil.ReadDir
读取目录 dirmane 中的所有目录和文件(不包括子目录)
返回读取到的文件的信息列表和读取过程中遇到的任何错误
返回的文件列表是经过排序的
FileInfo
type FileInfo interface {
Name() string // base name of the file
Size() int64 // length in bytes for regular files; system-dependent for others
Mode() FileMode // file mode bits
ModTime() time.Time // modification time
IsDir() bool // abbreviation for Mode().IsDir()
Sys() interface{} // underlying data source (can return nil)
}
代码:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
myfolder := `d:\go_workspace\`
files, _ := ioutil.ReadDir(myfolder)
for _, file := range files {
if file.IsDir() {
continue
} else {
fmt.Println(file.Name())
}
}
}
获取目录以及子目录中所有文件
在上面代码的基础上,使用递归,遍历所有的文件夹和子文件夹。
代码:
package main
import (
"fmt"
"io/ioutil"
)
func main() {
myfolder := `d:\go_workspace\`
listFile(myfolder)
}
func listFile(myfolder string) {
files, _ := ioutil.ReadDir(myfolder)
for _, file := range files {
if file.IsDir() {
listFile(myfolder + "/" + file.Name())
} else {
fmt.Println(myfolder + "/" + file.Name())
}
}
}
获取执行文件所在目录
代码1:
使用包:
path/filepath
os
package main
import (
"fmt"
"log"
"os"
"path/filepath"
)
func main() {
dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
if err != nil {
log.Fatal(err)
}
fmt.Println(dir)
}
代码2:
使用包:
path/filepath
os
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
ex, err := os.Executable()
if err != nil {
panic(err)
}
exPath := filepath.Dir(ex)
fmt.Println(exPath)
}
代码3:
使用包:
os
package main
import (
"fmt"
"os"
)
func main() {
pwd, err := os.Getwd()
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fmt.Println(pwd)
}
代码4:
使用包:
path/filepath
package main
import (
"fmt"
"path/filepath"
)
func main() {
fmt.Println(filepath.Abs("./"))
}
代码5:
第三方库:https://github.com/kardianos/osext
package main
import (
"fmt"
"log"
"github.com/kardianos/osext"
)
func main() {
folderPath, err := osext.ExecutableFolder()
if err != nil {
log.Fatal(err)
}
fmt.Println(folderPath)
}
显示所有文件夹、子文件夹、文件、子文件
使用包:
path/filepath
os
package main
import (
"fmt"
"os"
"path/filepath"
)
func visit(path string, f os.FileInfo, err error) error {
fmt.Printf("Visited: %s\n", path)
return nil
}
func main() {
root := `d:\go_workspace\`
err := filepath.Walk(root, visit)
fmt.Printf("filepath.Walk() returned %v\n", err)
}
获取文件夹中所有文件以及文件的大小
使用包:
path/filepath
os
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
dirname := "." + string(filepath.Separator)
d, err := os.Open(dirname)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
defer d.Close()
fi, err := d.Readdir(-1)
if err != nil {
fmt.Println(err)
os.Exit(1)
}
for _, fi := range fi {
if fi.Mode().IsRegular() {
fmt.Println(fi.Name(), fi.Size(), "bytes")
}
}
}
重命名文件
package main
import (
"log"
"os"
)
func main() {
originalPath := "./test.txt"
newPath := "test_new.txt"
err := os.Rename(originalPath, newPath)
if err != nil {
log.Fatal(err)
}
}
重命名文件夹
package main
import (
"log"
"os"
)
func main() {
originalPath := "test"
newPath := "test_new"
err := os.Rename(originalPath, newPath)
if err != nil {
log.Fatal(err)
}
}
判断某个文件是否存在
package main
import (
"fmt"
"os"
)
func main() {
originalPath := "test.txt"
result := Exists(originalPath)
fmt.Println(result)
}
func Exists(name string) bool {
if _, err := os.Stat(name); err != nil {
if os.IsNotExist(err) {
return false
}
}
return true
}
判断某个文件的读写权限
package main
import (
"log"
"os"
)
func main() {
//Write permission
file, err := os.OpenFile("./test.txt", os.O_WRONLY, 0666)
if err != nil {
if os.IsPermission(err) {
log.Println("Error: Write permission denied.")
}
}
file.Close()
//Read permission
file, err = os.OpenFile("./test.txt", os.O_RDONLY, 0666)
if err != nil {
if os.IsPermission(err) {
log.Println("Error: Read permission denied.")
}
}
file.Close()
}
golang中文件以及文件夹路径相关操作的更多相关文章
- python文件、文件夹的相关操作
python文件.文件夹的相关操作 #1.rename()可以完成对文件的重命名 #rename(需要修改的文件名,新的文件名) import os os.rename("readme.tx ...
- Golang中如何正确的使用sarama包操作Kafka?
Golang中如何正确的使用sarama包操作Kafka? 一.背景 在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源): 用户A给B发送消息,msg_gateway收到消息后,投 ...
- 浅谈python中文件和文件夹的相关操作
文件操作 文件的打开与关闭 打开文件 使用open(文件名,访问方式)函数,可以打开一个已存在的文件,或者创建一个新的文件. 示例如下: f = open('test.txt') # 访问方式可以省略 ...
- python3 文件及文件夹路径相关
1. #返回当前文件所在的目录 currentDir = path.dirname(__file__) # __file__ 为当前文件 2.获得某个路径的父级目录: parent_path = os ...
- python - os.path,路径相关操作
python处理系统路径的相关操作: # -*- coding: utf-8 -*- import os # 属性 print '__file__: %s' % __file__ # 绝对路径(包含文 ...
- golang中如何判断文件是否有可执行权限
本文介绍在Go语言如何检查文件的权限.以检查文件可执行权限为例. 在文件系统中,文件的属性使用uint32表示. 例如 -rwxrwxrwx 判断可执行权限,也就是检查文件mode是否有: --x-- ...
- Pandas之csv文件对列行的相关操作
1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'] ...
- WebView中的视频全屏的相关操作
近期工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,可是用起来不是那么简单的控件. 首先你肯定要定义,初始化一个webview,事 ...
- python路径相关操作
#获取当前文件所在目录filedir = __file__ print os.path.dirname(filedir) #获取文件名print os.path.basename(filedir)
随机推荐
- Nginx Too many open files
2019/07/25 08:31:31 [crit] 15929#15929: accept4() failed (24: Too many open files) 2019/07/25 08:31: ...
- C++标准库里自带的数值类型和字符串互相转换函数
需要包含头文件 #include <string> 数值类型转成string类型: string to_string(int val); string to_string(unsigned ...
- 两个重叠的div做前后翻转
当需要做一个翻转卡片式的div时候,需要两个div的大小等大例如: 画出两个等大的div后,将他们重叠 图中的两个div做了重叠,做重叠时候用的属性是 position: absolute; 并且需要 ...
- Android开发中常见问题分析及解决
最近公司有新的业务需求,需要开发一款APP,因为我开发过Android APP(我想告诉他们,那是4年前的事了,嘤嘤嘤),就把开发任务交给我了,当然也不是我一个人啦,让我组开发小组,说白了,就是让我来 ...
- CircularSlider半弧形滑动条
前言 这边文章主要 是写 一.半圆弧型滑块的设计 最近项目中需要用到半圆弧形滑块,其作用和UISlider差不多,用于拖动改变播放音乐的播放进度. 大概样子是这样的: 效果展示 特点如下: 滑动响应区 ...
- Image Processing and Analysis_15_Image Registration:A survey of medical image registration——1998
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- libssh
1.SSH概念 ssh(secure shell),安全外壳协议,由IETF的网络小组所制定.ssh为建立在应用层基础上的安全协议.SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议. ...
- 10_Azkaban案例实践3_Command操作HDFS
HDFS操作任务 1.创建job描述文件 # fs.job type=command command=/usr/local/src/hadoop-2.6.4/bin/hadoop fs -mkdir ...
- Annoying Present
http://codeforces.com/group/1EzrFFyOc0/contest/1009/problem/C 题意:原本有一个n个0的数组a[],你对它进行m次操作,每次操作让a[j]+ ...
- Hadoop动态增加节点与删除节点
Hadoop的全分布式安装网上也很多教程,踩过很多坑,整理不出来了……赶紧把增加删除节点留住. 均衡数据 (1)设置数据传输带宽为64M(默认值比较低) hdfs dfsadmin -setBalan ...