前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go基础——文件操作

Go基础——文件操作

作者头像
羊羽shine
发布2019-05-28 13:27:16
3950
发布2019-05-28 13:27:16
举报
文章被收录于专栏:Golang开发Golang开发

目录操作

创建名称为name的目录,权限设置是perm,例如0777

代码语言:javascript
复制
func Mkdir(name string, perm FileMode) error

根据path创建多级子目录,例如astaxie/test1/test2。

代码语言:javascript
复制
 func MkdirAll(path string, perm FileMode) error

删除名称为name的目录,当目录下有文件或者其他目录时会出错

代码语言:javascript
复制
func Remove(name string) error

根据path删除多级子目录,如果path是单个名称,那么该目录下的子目录全部删除。

代码语言:javascript
复制
func RemoveAll(path string) error

eg:

代码语言:javascript
复制
package main

import (
    "fmt"
    "os"
)

func main() {
    os.Mkdir("test", 0777)
    os.MkdirAll("test/test1/test2", 0777)
    err := os.Remove("test")
    if err != nil {
        fmt.Println(err)
    }
    os.RemoveAll("test")
}

文件操作

建立文件

根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666的文件,返回的文件对象是可读写的。

代码语言:javascript
复制
 func Create(name string) (file *File, err Error)

根据文件描述符创建相应的文件,返回一个文件对象

代码语言:javascript
复制
 func NewFile(fd uintptr, name string) *File

打开文件

该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile。

代码语言:javascript
复制
- func Open(name string) (file *File, err Error)

打开名称为name的文件,flag是打开的方式,只读、读写等,perm是权限

代码语言:javascript
复制
 func OpenFile(name string, flag int, perm uint32) (file *File, err Error)  

写文件

写入byte类型的信息到文件

代码语言:javascript
复制
 func (file *File) Write(b []byte) (n int, err Error)

在指定位置开始写入byte类型的信息

代码语言:javascript
复制
 func (file *File) WriteAt(b []byte, off int64) (n int, err Error)

写入string信息到文件

代码语言:javascript
复制
 func (file *File) WriteString(s string) (ret int, err Error)

读文件

读取数据到b中

代码语言:javascript
复制
 func (file *File) Read(b []byte) (n int, err Error)

从off开始读取数据到b中

代码语言:javascript
复制
func (file *File) ReadAt(b []byte, off int64) (n int, err Error)

eg:

代码语言:javascript
复制
package main

import (
    "fmt"
    "os"
)

func main() {
    fileName := "testFile"
    currFile,err:=os.Create(fileName)
    if err!= nil {
        fmt.Println(err,currFile);
    }
    currFile.WriteString("hello world\n")
    currFile.Write([]byte("hello go\n"))
    currFile,err = os.Open(fileName);
    defer currFile.Close()
    buf := make([]byte,1024)
    for  {
       n,_:=currFile.Read(buf)
        if 0==n {
          break
        }
        os.Stdout.Write(buf[:n])
    }
}

删文件

Go语言里面删除文件和删除文件夹是同一个函数, 调用该函数就可以删除文件名为name的文件

代码语言:javascript
复制
func Remove(name string) Error
代码语言:javascript
复制
// Discard 是一个 io.Writer 接口,调用它的 Write 方法将不做任何事情
// 并且始终成功返回。
var Discard io.Writer = devNull(0)

// ReadAll 读取 r 中的所有数据,返回读取的数据和遇到的错误。
// 如果读取成功,则 err 返回 nil,而不是 EOF,因为 ReadAll 定义为读取
// 所有数据,所以不会把 EOF 当做错误处理。
func ReadAll(r io.Reader) ([]byte, error)

// ReadFile 读取文件中的所有数据,返回读取的数据和遇到的错误。
// 如果读取成功,则 err 返回 nil,而不是 EOF
func ReadFile(filename string) ([]byte, error)

// WriteFile 向文件中写入数据,写入前会清空文件。
// 如果文件不存在,则会以指定的权限创建该文件。
// 返回遇到的错误。
func WriteFile(filename string, data []byte, perm os.FileMode) error

// ReadDir 读取指定目录中的所有目录和文件(不包括子目录)。
// 返回读取到的文件信息列表和遇到的错误,列表是经过排序的。
func ReadDir(dirname string) ([]os.FileInfo, error)

// NopCloser 将 r 包装为一个 ReadCloser 类型,但 Close 方法不做任何事情。
func NopCloser(r io.Reader) io.ReadCloser

// TempFile 在 dir 目录中创建一个以 prefix 为前缀的临时文件,并将其以读
// 写模式打开。返回创建的文件对象和遇到的错误。
// 如果 dir 为空,则在默认的临时目录中创建文件(参见 os.TempDir),多次
// 调用会创建不同的临时文件,调用者可以通过 f.Name() 获取文件的完整路径。
// 调用本函数所创建的临时文件,应该由调用者自己删除。
func TempFile(dir, prefix string) (f *os.File, err error)

// TempDir 功能同 TempFile,只不过创建的是目录,返回目录的完整路径。
func TempDir(dir, prefix string) (name string, err error)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.01.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 目录操作
  • 文件操作
    • 建立文件
      • 打开文件
        • 写文件
          • 读文件
            • 删文件
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档