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()
}

原文地址:https://www.cnblogs.com/craneboos/p/9831049.html

时间: 2024-11-08 11:30:08

golang中文件以及文件夹路径相关操作的相关文章

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

最近工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,但是用起来不是那么简单的控件. 首先你肯定要定义,初始化一个webview,其实网上的例子很多,我这里就简单的把一些WebView 中可能会用到的的很重要的属性以及支持全屏播放视频该怎么实现的代码粘出来,直接放到项目中去就行了 <span style="white-space:pre"></span><pre name="co

linux下的文件IO缓冲区,及其相关操作

linux下的文件IO操作 浅谈文件IO缓冲 Read()和write()函数在操作磁盘文件时不会直接发起磁盘访问,而是仅仅在用户空间缓冲区与内核缓冲区高速缓存之间复制数据. 当调用write()函数的写入3个字节的时候,由于系统调用与磁盘操作并不同步,在write()函数结束后续某个时刻,内核才会将其缓冲区中的数据写入磁盘.如果在此期间,另一个进程试图读取该文件的这几个字节,那么内核将自动从缓冲区高速缓存中提供这些数据,而不是文件中. 与此同理,对输入而言,内核从磁盘中读取数据并存储到内核缓冲

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

1 #1.rename()可以完成对文件的重命名 2 #rename(需要修改的文件名,新的文件名) 3 import os 4 os.rename("readme.txt","test.txt") 5 #2.删除文件 6 import os 7 os.remove("test.txt") 8 #3.创建文件夹 9 import os 10 os.mkdir("一个文件夹") 11 12 #4.获取当前目录 13 import

[转]C#中路径相关操作

using System.IO 1.判定一个给定的路径是否有效,合法  通过Path.GetInvalidPathChars或Path.GetInvalidFileNameChars方法获得非法的路径/文件名字符,可以根据它来判断路径中是否包含非法字符: 2.如何确定一个路径字符串是表示目录还是文件   使用Directory.Exists或File.Exist方法,如果前者为真,则路径表示目录:如果后者为真,则路径表示文件上面的方法有个缺点就是不能处理那些不存在的文件或目录.这时可以考虑使用P

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

1.Pandas对数据某一列删除 1.删除列 import pandas as pd df = pd.read_csv(file) #axis=1就是删除列 df.drop(['列名1','列名2'], axis=1) 2.删除记录,也就是行 import pandas as pd df = pd.read_csv(file) #axis=0就是删除记录也就是行 df.drop([0,1,3], axis=0) 2.Pandas之修改列名 1.第一种是没有表头,想要添加表头 因为csv文件是没有

5lession-path路径相关操作

今天开始接触到了文件目录.路径方面的知识点.记录如下 先看代码 #!/usr/bin/python # -*- coding: utf-8 -*- import os import sys current_path = os.getcwd() path_test = "/home/zhangshuli/PROJECT/PROJECTL/32_kk" path_test2 = "/home/zhangshuli/PROJECT/PROJECTL/32_kk/packages/a

文件及文件夹的常见操作

文件的重命名.删除 有些时候,需要对文件进行重命名.删除等一些操作,python的os模块中都有这么功能 <1>文件重命名 os模块中的rename()可以完成对文件的重命名操作 rename(需要修改的文件名, 新的文件名) import os os.rename("毕业论文.txt", "毕业论文-最终版.txt") <2>删除文件 os模块中的remove()可以完成对文件的删除操作 remove(待删除的文件名) import os

u-boot串口和stdio、console初始化及相关操作详解&lt;三&gt;

console是构建在stdio之上的,console的初始化是board_r中最后收尾的操作. console的初始化函数console_init_r在common/console.c中实现: int console_init_r(void) { char *stdinname, *stdoutname, *stderrname; struct stdio_dev *inputdev = NULL, *outputdev = NULL, *errdev = NULL; #ifdef CONFI

Path,Files巩固,题目:从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中

这个题目用传统的File,InputStream可以做,但是如果用Files,Path类做,虽然思路上会困难一些,但是代码简洁了很多,以下是代码: import java.io.IOException; import java.nio.file.FileVisitResult; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.Simple