go mysql保存pdf文件路径_Go实战--golang中文件以及文件夹路径相关操作

本文介绍了Go语言中处理文件和目录的各种操作,包括读取目录中所有文件、遍历目录及其子目录、获取执行文件所在目录、检查文件存在及权限等。示例代码详细展示了如何实现这些功能。
摘要由CSDN通过智能技术生成

生命不止,继续 go go go!!!

之前介绍过golang的标准库:path/filepath, os

今天就跟大家分享几个关于文件以及文件夹的相关操作。

获取目录中所有文件

使用包:

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("./"))

}

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

}

c0e1b4e2b960704b8f1749ddb36e8a2f.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值