文件操作

文件操作

目录操作

文件操作的大多数函数都是在os包里面,下面列举几个目录操作:

  • func Mkdir(name string,perm FileMode) error: 创建名称为name的目录,权限设置是perm,例如0777
  • func MkdirAll(path string,perm FileMode)error:根据Path创建多级目录,例如shen/test1/test2
  • func Remove(name string) error:删除名称为name的目录,当目录下有文件或者其他目录是会出错的
  • func RemoveAll(path string)error:根据path删除多级子目录,如果path是单个名称,那么该目录下的子目录全部删除
func main() {
//在当前工程文件下创建目录
    os.Mkdir("demo1",0777)
    os.MkdirAll("demo1/test1/test2",0777)

    err := os.Remove("mytest")
    if err != nil {
        fmt.Println(err)
    }
    os.RemoveAll("demo1/test1/test2")
}

文件操作

  • 建立与打开文件

    1. 新建文件可以通过如下两个方法
      • func Create(name string)(file *File,err error):根据提供的文件名创建新的文件,返回一个文件对象,默认权限是0666文件,可读可写
      • func NewFile(fd uintptr,name string) *File:根据文件描述符创建相应的文件,返回一个文件对象
    2. 通过下面两个方法来打开文件
      • func Open(name string)(file *File,err Error):该方法打开一个名称为name的文件,但是是只读方式,内部实现其实调用了OpenFile
      • func OpenFile(name string,flag int,perm uint32)():打开名称为name的文件,flag是打开方式,只读或读写等,perm是权限
  • 写文件

    1. func (file *File)Write(b []byte)(n int,err Error):写入byte类型的信息到文件中
    2. func (file *File)WriteAt(b []byte,off int64)(n int,err Error):在指定位置开始写入byte类型的信息
    3. func (file *File)WriteString(s string) (ret int,err Error):写入string 信息到文件
  • 读文件

    1. func (file *File)Read(b []byte)(n int,err Error):读取数据到b中
    2. func (file *File)ReadAt(b []byte,off int64)(n int,err Error) :从off开始读取数据到b中
func main() {
    userFile := "demo1/test.txt"
    file,_ := os.Create(userFile)

    for i := 0;i < 10 ;i++  {
        index,_ := file.WriteString("hello world\n")
        file.Write([]byte("just a test\n"))
        fmt.Println("index = ",index)
    }


    file1,_ := os.OpenFile(userFile,os.O_RDWR,0666)
    defer file1.Close()
    b := make([]byte,1024)

    file1.Read(b)
    sourceStr := string(b)
    strArray := strings.Split(sourceStr,"\n")
    strArray = strArray[:len(strArray)-1]
    var desStr string
    for _,temp := range strArray{
        if len(temp) > 0 {
            temp = strings.Join([]string{temp,"2222\n"},"")
            fmt.Printf("temp = %s\n",temp)
            desStr = strings.Join([]string{desStr,temp},"")
        }
    }
    n,err := file1.WriteAt([]byte(desStr),0)
    //n,err := file1.WriteString(desStr)
    if err != nil {
        fmt.Println("写入有误")
    }
    fmt.Printf("n = %d\n",n)
//删除文件
    //os.Remove(userFile)

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 读写文件示例:### 删除文件os.Remove(fname) 创建目录os.Mkdir(dname, os.Mo...
    ppice阅读 1,041评论 0 0
  • 文件的打开和关闭 和C语言一样, Go语言中操作文件也是通过一个FILE结构体 Open函数func Open(n...
    极客江南阅读 885评论 0 3
  • 1.创建文件夹 !/bin/sh mkdir -m 777 "%%1" 2.创建文件 !/bin/sh touch...
    BigJeffWang阅读 10,186评论 3 53
  • 文件的打开和关闭 os包中提供了方法叫做Open,就是专门用于打开某一个文件的 注意点:如果文件不存在不会自动创建...
    AuglyXu阅读 1,447评论 0 6
  • 某天,看到Y君在朋友圈里发了一条状态:这世界其实没有人在关注你 我:某种意义上来说是这样的,没有人会时刻关注别人…...
    南山读书阅读 777评论 0 0