• 89_Go基础_1_57 IO操作


      1 package main
      2 
      3 import (
      4     "fmt"
      5     "os"
      6     "path/filepath"
      7 )
      8 
      9 func main() {
     10     /*
     11         文件操作:
     12         1.路径:
     13             相对路径:relative
     14                 ab.txt
     15                 相对于当前工程
     16             绝对路径:absolute
     17                 /Users/ruby/Documents/pro/a/aa.txt
     18 
     19             .当前目录
     20             ..上一层
     21         2.创建文件夹,如果文件夹存在,创建失败
     22             os.MkDir(),创建一层
     23             os.MkDirAll(),可以创建多层
     24 
     25         3.创建文件,Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
     26             os.Create(),创建文件
     27 
     28         4.打开文件:让当前的程序,和指定的文件之间建立一个连接
     29             os.Open(filename)
     30             os.OpenFile(filename,mode,perm)
     31 
     32         5.关闭文件:程序和文件之间的链接断开。
     33             file.Close()
     34 
     35         5.删除文件或目录:慎用,慎用,再慎用
     36             os.Remove(),删除文件和空目录
     37             os.RemoveAll(),删除所有
     38     */
     39 
     40     // 1.路径
     41     fileName1 := "D:\\Go\\web2\\aa.txt"
     42     fileName2 := "bb.txt"
     43     fmt.Println(filepath.IsAbs(fileName1)) // true
     44     fmt.Println(filepath.IsAbs(fileName2)) // false
     45     fmt.Println(filepath.Abs(fileName1))   // D:\Go\web2\aa.txt <nil>
     46     fmt.Println(filepath.Abs(fileName2))   // D:\Go\web2\bb.txt <nil>
     47 
     48     // 2.创建目录
     49     err := os.Mkdir("D:\\Go\\web2\\dir1", os.ModePerm) // 必须不存在
     50     if err != nil {
     51         fmt.Println("err:", err)
     52         return
     53     }
     54     fmt.Println("文件夹创建成功。。")
     55 
     56     err = os.MkdirAll("D:\\Go\\web2\\dir1\\dir1_1", os.ModePerm) // 递归创建,存在则保持不变
     57     if err != nil {
     58         fmt.Println("err:", err)
     59         return
     60     }
     61     fmt.Println("多层文件夹创建成功")
     62 
     63     // 3.创建文件:Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
     64     file1, err := os.Create("D:\\Go\\web2\\aa.txt") // 存在则清空内容
     65     if err != nil {
     66         fmt.Println("err:", err)
     67         return
     68     }
     69     fmt.Println("Create OK,", file1) // &{0xc00007c780}
     70 
     71     file2, err := os.Create("cc.txt") // 创建相对路径的文件,是以当前工程为参照的
     72     if err != nil {
     73         fmt.Println("err :", err)
     74         return
     75     }
     76     fmt.Println(file2) // &{0xc00007aa00}
     77 
     78     // 4.打开文件:
     79     file3, err := os.Open("./aa.txt") // 只读的
     80     if err != nil {
     81         fmt.Println("err:", err)
     82         return
     83     }
     84     fmt.Println(file3) // &{0xc0000d0780}
     85 
     86     /*
     87         第一个参数:文件名称
     88         第二个参数:文件的打开方式
     89             const (
     90         // Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
     91             O_RDONLY int = syscall.O_RDONLY // open the file read-only.
     92             O_WRONLY int = syscall.O_WRONLY // open the file write-only.
     93             O_RDWR   int = syscall.O_RDWR   // open the file read-write.
     94             // The remaining values may be or'ed in to control behavior.
     95             O_APPEND int = syscall.O_APPEND // append data to the file when writing.
     96             O_CREATE int = syscall.O_CREAT  // create a new file if none exists.
     97             O_EXCL   int = syscall.O_EXCL   // used with O_CREATE, file must not exist.
     98             O_SYNC   int = syscall.O_SYNC   // open for synchronous I/O.
     99             O_TRUNC  int = syscall.O_TRUNC  // truncate regular writable file when opened.
    100         )
    101         第三个参数:文件的权限:文件不存在创建文件,需要指定权限
    102     */
    103 
    104     file4, err := os.OpenFile("./aa.txt", os.O_RDONLY|os.O_WRONLY, os.ModePerm)
    105     if err != nil {
    106         fmt.Println("err:", err)
    107         return
    108     }
    109     fmt.Println(file4) // &{0xc0000d0780}
    110 
    111     // 5关闭文件,
    112     file4.Close()
    113 
    114     // 6.删除文件或文件夹:
    115     err = os.Remove("D:\\Go\\web2\\cc.txt")
    116     if err != nil {
    117         fmt.Println("err:", err)
    118         return
    119     }
    120     fmt.Println("删除文件成功。。")
    121     // 删除目录
    122     err = os.RemoveAll("D:\\Go\\web2\\dir1")
    123     if err != nil {
    124         fmt.Println("err:", err)
    125         return
    126     }
    127     fmt.Println("删除目录成功。。")
    128 }
  • 相关阅读:
    聊聊 归一化和标准化
    感觉对自己比较有意义的文章收录
    Quartz.Net 使用心得(一)
    Quartz.Net 使用心得(二)
    HttpClient异步请求Post传递Json
    今天我也用上了阿里云的Centos
    WebApi传参总动员(一)
    半监督学习
    特征选择
    深度学习图像分割——Unet网络
  • 原文地址:https://www.cnblogs.com/luwei0915/p/15638730.html
Copyright © 2020-2023  润新知