Pensieve
日常记录
日常记录
  • tool

    • yarn
    • powershell
    • 编辑器
    • git命令提示
    • vim
    • gitlab
    • husky-git钩子工具
  • wsl

    • 本机代理
  • html

    • 不常用功能
  • js

    • math 相关
    • js 日期相关
    • API参考
    • 算法相关
    • 图片相关
    • js 事件相关
    • 数据结构相关
    • vue
    • rxjs相关
  • node

    • 文件操作
    • svg压缩工具-svgo
  • go

    • go的一些命令
    • 文件操作
    • 网络相关
    • 目录结构推荐
    • 常用三方库
    • wasm
  • rust

    • Rust 入门笔记
    • wasm
    • 一些库
    • 圣经记录
  • linux

    • hyprland的一些问题
  • 杂项

    • 视频流相关

文件操作

判断文件或文件夹是否存在

os.Stat()

  • 如果返回的错误为nil,说明文件或文件夹存在
  • 如果返回的错误类型使用os.IsNotExist()判断为true,说明文件或文件夹不存在
  • 如果返回的错误为其它类型,则不确定是否在存在
func PathExists(path string) (bool, error) {
	_, err := os.Stat(path)
	if err == nil {
		return true, nil
	}
	if os.IsNotExist(err) {
		return false, nil
	}
	return false, err
}

文件拷贝

1.io.Copy()

func copy ( src , dst string ) ( int64 , error ) { 
    sourceFileStat , err := os . Stat ( src ) 
    if err != nil { 
            return 0 , err
    } 

    if ! sourceFileStat . Mode () . IsRegular () { 
            return 0 , fmt . Errorf ( "%s is not a regular file" , src ) 
    } 

    source , err := os . Open ( src ) 
    if err != nil { 
            return 0 , err
    } 
    defer source . Close () 

    destination , err := os . Create ( dst ) 
    if err != nil { 
            return 0 , err
    } 
    defer destination . Close () 
    nBytes , err := io . Copy ( destination , source ) 
    return nBytes , err

2.ioutil.WriteFile()和ioutil.ReadFile()

input , err := ioutil . ReadFile ( sourceFile ) 
    if err != nil { 
            fmt . Println ( err ) 
            return 
    } 

    err = ioutil . WriteFile ( destinationFile , input , 0644 ) 
    if err != nil { 
            fmt . Println ( "Error creating" , destinationFile ) 
            fmt . Println ( err ) 
            return 
    }

3.os.Read()和os.Write()

buf := make ([] byte , BUFFERSIZE ) 
    for { 
            n , err := source . Read ( buf ) 
            if err != nil && err != io . EOF { 
                    return err
            } 
            if n == 0 { 
                    break 
            } 

            if _ , err := destination . Write ( buf [: n ]); err != nil { 
                    return err
            } 
    } }
Last Updated: 11/2/20, 4:46 PM
Contributors: dxy2233
Prev
go的一些命令
Next
网络相关