Golang os包下常用的文件相关操作

一、文件操作的相关方法

// File represents an open file descriptor.
type File struct {
    *file // os specific
}

 

File表示打开的文件描述符

操作File的常用函数:

1.Create函数

func Create(name string) (*File, error) {

       return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666)

}

 

功能:创建一个文件,文件的mode为0666(读写权限),如果文件已存在,则重新创建一个,原文件被覆盖(内容会被清空),创建的新文件具有读写权限,实现是调用OpenFile来创建文件的。

 

2.NewFile函数

func NewFile(fd uintptr, name string) *File

 

功能:根据文件描述符和名字创建一个新的文件

Stdin  = NewFile(uintptr(syscall.Stdin), "/dev/stdin")   

Stdout = NewFile(uintptr(syscall.Stdout), "/dev/stdout")  

Stderr = NewFile(uintptr(syscall.Stderr), "/dev/stderr")

 

 

3.OpenFile函数

func OpenFile(name string, flag int, perm FileMode) (*File, error)

 

功能:按指定文件权限和打开方式打开文件或者创建文件,其中flag标志如下

O_RDONLY:只读模式(read-only)

O_WRONLY:只写模式(write-only)

O_RDWR:读写模式(read-write)

//以上三种模式必须指定一个

O_APPEND:追加模式(append)

O_CREATE:文件不存在就创建(create a new file if none exists.)

O_EXCL:与 O_CREATE 一起用,构成一个新建文件的功能,它要求文件必须不存在(used with O_CREATE, file must not exist)

O_SYNC:同步方式打开,即不使用缓存,直接写入硬盘

O_TRUNC:打开并清空文件

 

至于操作权限perm,除非创建文件时才需要指定,不需要创建新文件时可以将其设定为0.虽然go语言给perm权限设定了很多的常量,但是习惯上也可以直接使用数字,如0666(具体含义和Unix系统的一致).

 

4.Open函数

func Open(name string) (*File, error)

功能:打开一个文件,返回文件描述符,该文件描述符只有只读权限.他相当于OpenFile(name string,O_RDWR,0)

 

5.Pipe函数

func Pipe() (r *File, w *File, err error)

 

功能:返回一对连接的文件,从r中读取写入w中的数据,即首先向w中写入数据,此时从r中变能够读取到写入w中的数据,Pipe()函数返回文件和该过程中产生的错误.

 

示例:

func main() {
       r,w,_ := os.Pipe()
       w.Write([]byte("Hello Pipe!"))

       bs := make([]byte,20)
       n,err := r.Read(bs)
       if err != nil {
           log.Fatal(err)
       }

       fmt.Println(string(bs[:n]))  //打印结果: Hello Pipe!

}

 

6. Chdir函数

func Chdir(dir string) error  

功能:将当前工作目录更改为dir目录。

 

7. Getwd函数

func Getwd() (dir string, err error)   

功能:获取当前目录,类似linux中的pwd。

 

8. Chmod函数

func Chmod(name string, mode FileMode) error    

功能:更改文件的权限(读写执行,分为三类:all-group-owner)

 

9. Chown函数

func Chown(name string, uid, gid int) error 

功能:更改文件拥有者owner

 

10. Chtimes函数

func Chtimes(name string, atime time.Time, mtime time.Time) error   

功能:更改文件的访问时间和修改时间,atime表示访问时间,mtime表示更改时间

 

11. Rename函数

func Rename(oldpath, newpath string) error

功能:用于修改文件夹或文件名的名称

 

12. Mkdir函数

func Mkdir(name string, perm FileMode) error

功能:用于创建指定权限的文件夹,只能创建一级目录。

注意:当该文件夹已经存在时,会返回error(Cannot create a file when that file already exists.)

 

13. MkdirAll函数

func MkdirAll(path string, perm FileMode) error

功能:用于递归创建文件目录,可以创建多级目录。

func main() {
       dir,err := os.Getwd()
       if err != nil {
           log.Fatal(err)
       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值