• Go_file操作


    1. FileInfo

    package main
    
    import (
    	"os"
    	"fmt"
    )
    
    func main() {
    	/*
    	FileInfo:文件信息
    		interface
    			Name(),文件名
    			Size(),文件大小,字节为单位
    			IsDir(),是否是目录
    			ModTime(),修改时间
    			Mode(),权限
    
    	 */
    	//stat 统计
    	fileInfo, err := os.Stat("/Users/ruby/Documents/pro/a/aa.txt")
    	if err != nil {
    		fmt.Println("err :", err)
    		return
    	}
    	fmt.Printf("%T
    ", fileInfo)
    	//文件名
    	fmt.Println(fileInfo.Name())
    	//文件大小
    	fmt.Println(fileInfo.Size())
    	//是否是目录
    	fmt.Println(fileInfo.IsDir()) //IsDirectory
    	//修改时间
    	fmt.Println(fileInfo.ModTime())
    	//权限
    	fmt.Println(fileInfo.Mode()) //-rw-r--r--
    }
    

    2. 文件操作

    package main
    
    import (
    "fmt"
    "path/filepath"
    "path"
    "os"
    )
    
    func main() {
    	/*
    	文件操作:
    	1.路径:
    		相对路径:relative
    			ab.txt
    			相对于当前工程
    		绝对路径:absolute
    			/Users/ruby/Documents/pro/a/aa.txt
    
    		.当前目录
    		..上一层
    	2.创建文件夹,如果文件夹存在,创建失败
    		os.MkDir(),创建一层
    		os.MkDirAll(),可以创建多层
    
    	3.创建文件,Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
    		os.Create(),创建文件
    
    	4.打开文件:让当前的程序,和指定的文件之间建立一个连接
    		os.Open(filename)
    		os.OpenFile(filename,mode,perm)
    
    	5.关闭文件:程序和文件之间的链接断开。
    		file.Close()
    
    	5.删除文件或目录:慎用,慎用,再慎用
    		os.Remove(),删除文件和空目录
    		os.RemoveAll(),删除所有
    	 */
    	//1.路径
    	fileName1:="/Users/ruby/Documents/pro/a/aa.txt"
    	fileName2:="bb.txt"
    	fmt.Println(filepath.IsAbs(fileName1)) //true
    	fmt.Println(filepath.IsAbs(fileName2)) //false
    	fmt.Println(filepath.Abs(fileName1)) //获取绝对路径
    	fmt.Println(filepath.Abs(fileName2)) //获取绝对路径
    
    	fmt.Println("获取父目录:",path.Join(fileName1,".."))
    
    	//2.创建目录
    	err := os.Mkdir("/Users/ruby/Documents/pro/a/bb",os.ModePerm) //os.ModePerm 权限 0777
    	if err != nil{ //文件夹存在就创建失败
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println("文件夹创建成功。。")
    	//创建多层目录
    	err :=os.MkdirAll("/Users/ruby/Documents/pro/a/cc/dd/ee",os.ModePerm)
    	if err != nil{
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println("多层文件夹创建成功")
    
    	//3.创建文件:Create采用模式0666(任何人都可读写,不可执行)创建一个名为name的文件,如果文件已存在会截断它(为空文件)
    	file1,err :=os.Create("/Users/ruby/Documents/pro/a/ab.txt")
    	if err != nil{
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println(file1)
    
    	file2,err := os.Create(fileName2)//创建相对路径的文件,是以当前工程为参照的
    	if err != nil{
    		fmt.Println("err :",err)
    		return
    	}
    	fmt.Println(file2)
    
    	//4.打开文件:
    	file3 ,err := os.Open(fileName1) //只读的
    	if err != nil{
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println(file3)
    	/*
    	第一个参数:文件名称
    	第二个参数:文件的打开方式
    	const (
        O_RDONLY int = syscall.O_RDONLY // 只读模式打开文件
        O_WRONLY int = syscall.O_WRONLY // 只写模式打开文件
        O_RDWR   int = syscall.O_RDWR   // 读写模式打开文件
        O_APPEND int = syscall.O_APPEND // 写操作时将数据附加到文件尾部
        O_CREATE int = syscall.O_CREAT  // 如果不存在将创建一个新文件
        O_EXCL   int = syscall.O_EXCL   // 和O_CREATE配合使用,文件必须不存在
        O_SYNC   int = syscall.O_SYNC   // 打开文件用于同步I/O
        O_TRUNC  int = syscall.O_TRUNC  // 如果可能,打开时清空文件
    )
    	第三个参数:文件的权限:文件不存在创建文件,需要指定权限
    	 */
    	file4,err := os.OpenFile(fileName1,os.O_RDONLY|os.O_WRONLY,os.ModePerm)
    	if err != nil{
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println(file4)
    
    	//5关闭文件,
    	file4.Close()
    
    	//6.删除文件或文件夹:
    	//删除文件
    	err :=  os.Remove("/Users/ruby/Documents/pro/a/aa.txt")
    	if err != nil{
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println("删除文件成功。。")
    	//删除目录
    	err :=  os.RemoveAll("/Users/ruby/Documents/pro/a/cc")
    	if err != nil{
    		fmt.Println("err:",err)
    		return
    	}
    	fmt.Println("删除目录成功。。")
    }
    

     

  • 相关阅读:
    在其他对象上同步
    如何在一个线程环境中使用一个线程非安全的java类
    原子类
    Volatile
    Spring中的设计模式2
    Spring中的设计模式
    Struts2中的设计模式
    Struts2中的设计模式----ThreadLocal模式
    享元模式(Flyweight)
    Java类加载器的工作原理
  • 原文地址:https://www.cnblogs.com/yzg-14/p/12250997.html
Copyright © 2020-2023  润新知