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 }