获取目录中所有文件
使用包:
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中文件以及文件夹路径相关操作的更多相关文章

  1. python文件、文件夹的相关操作

    python文件.文件夹的相关操作 #1.rename()可以完成对文件的重命名 #rename(需要修改的文件名,新的文件名) import os os.rename("readme.tx ...

  2. Golang中如何正确的使用sarama包操作Kafka?

    Golang中如何正确的使用sarama包操作Kafka? 一.背景 在一些业务系统中,模块之间通过引入Kafka解藕,拿IM举例(图来源): 用户A给B发送消息,msg_gateway收到消息后,投 ...

  3. 浅谈python中文件和文件夹的相关操作

    文件操作 文件的打开与关闭 打开文件 使用open(文件名,访问方式)函数,可以打开一个已存在的文件,或者创建一个新的文件. 示例如下: f = open('test.txt') # 访问方式可以省略 ...

  4. python3 文件及文件夹路径相关

    1. #返回当前文件所在的目录 currentDir = path.dirname(__file__) # __file__ 为当前文件 2.获得某个路径的父级目录: parent_path = os ...

  5. python - os.path,路径相关操作

    python处理系统路径的相关操作: # -*- coding: utf-8 -*- import os # 属性 print '__file__: %s' % __file__ # 绝对路径(包含文 ...

  6. golang中如何判断文件是否有可执行权限

    本文介绍在Go语言如何检查文件的权限.以检查文件可执行权限为例. 在文件系统中,文件的属性使用uint32表示. 例如 -rwxrwxrwx 判断可执行权限,也就是检查文件mode是否有: --x-- ...

  7. Pandas之csv文件对列行的相关操作

    1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'] ...

  8. WebView中的视频全屏的相关操作

    近期工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,可是用起来不是那么简单的控件. 首先你肯定要定义,初始化一个webview,事 ...

  9. python路径相关操作

    #获取当前文件所在目录filedir = __file__ print os.path.dirname(filedir) #获取文件名print os.path.basename(filedir)

随机推荐

  1. document对象详解

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...

  2. Go 方法使用

    方法的定义 在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数. type user struct { name string, email string, } ...

  3. 如何使用Visual Studio Code调试PHP CLI应用和Web应用

    在按照Jerry的公众号文章 什么?在SAP中国研究院里还需要会PHP开发? 进行XDebug在本地的配置之后,如果想使用Visual Studio Code而不是Eclipse来调试PHP应用,步骤 ...

  4. curl函数错误码对照信息表

  5. CSS 样式表{二}

    1 选择器的优先级 选择器的优先主要考虑选择器的权重 可以将各种选择器的权重以数值来表示,数值越大,优先级越高 选择器 权重值 标签selector 1 类选择器 10 ID选择器 100 行内样式 ...

  6. ES date_histogram 聚合

    如下 GET cars/index/_search { "size":0, "aggs": { "sales": { "date_ ...

  7. 网络设备驱动程序-netdevice结构体关键部分注释

    仅仅做个记录,内核4.19 struct net_device { char name[IFNAMSIZ]; //网络设备的名称 struct hlist_node name_hlist; char ...

  8. Codeforces Round #590 (Div. 3) 万恶的自己WAC

    C题:一道简单的C题卡了半天,我太菜了 题意:给你一个n*2的矩阵,每个位置有一个数字,对应一种管道,要求通道可不可以从左上通到右下 由提议可以看出,1,2对应的是直管道,3,4,5,6对应弯管道,只 ...

  9. bp算法推导过程

    参考:张玉宏<深度学习之美:AI时代的数据处理与最佳实践>265-271页

  10. 机器学习中的数学-强大的矩阵奇异值分解(SVD)及其应用

    版权声明: 本文由LeftNotEasy发布于http://leftnoteasy.cnblogs.com, 本文可以被全部的转载或者部分使用,但请注明出处,如果有问题,请联系wheeleast@gm ...