`
david_je
  • 浏览: 368740 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

GoLang操作文件

    博客分类:
  • go
 
阅读更多

    GoLang操作文件的方法有很多,这里记录和归纳一下。主要有create/NewFile/Open/OpenFile/Pipe这5个。 

    

     

func Create(name string) (file *File, err error)
func NewFile(fd uintptr, name string) *File
func Open(name string) (file *File, err error)
func OpenFile(name string, flag int, perm FileMode) (file *File, err error)
func Pipe() (r *File, w *File, err error)

    

 

    Create方法是默认创建一个权限是0666的空文件,如果文件已经存在就清空它。如果运行成功,就返回一个可以做I/O操作的文件,他的权限是O_RDWR。如果错误,就返回*PathError.

  

    NewFile方法是安装给定的文件描述和名字生成一个文件。

 

    Open打开该文件用于读取,如果成功,返回一个用于读取的文件,文件权限是O_RDONLY。如果错误,就返回*PathError。

 

    OpenFile是一个广义的调用,大部分的用户使用Create或者Open方法。可以按照指定的flag和perm去打开文件。成功返回一个可用于I/O的文件,错误就返回*PathError。

 

    Pipe返回一对连接文件,从r读取,返回bytes写到w。

 

    另外:

 

    

const (
    O_RDONLY int = syscall.O_RDONLY // open the file read-only.
    O_WRONLY int = syscall.O_WRONLY // open the file write-only.
    O_RDWR   int = syscall.O_RDWR   // open the file read-write.
    O_APPEND int = syscall.O_APPEND // append data to the file when writing.
    O_CREATE int = syscall.O_CREAT  // create a new file if none exists.
    O_EXCL   int = syscall.O_EXCL   // used with O_CREATE, file must not exist
    O_SYNC   int = syscall.O_SYNC   // open for synchronous I/O.
    O_TRUNC  int = syscall.O_TRUNC  // if possible, truncate file when opened.
)

 

    

//读取文件
package main

import(
    "os"
    "fmt"
    "flag"
)

func main(){
    flag.Parse()
    file := flag.Arg(0)
    f,err := os.Open(file)
    if err != nil{
         panic(err)
    }
    defer f.Close()
    buf := make([]byte,100)
    for{
        rint,_ := f.Read(buf)
        if 0==rint{break}
        fmt.Println(string(buf[:rint]))
        //os.Stdout.Write(buf[:rint])
    } 
    
}

 

   

    

//使用bufio读取
package main
import(
    "os"
    "bufio"
    "fmt"
    "flag"
)

func main(){
    flag.Parse()
    file := flag.Arg(0)
    f, err := os.Open(file)
    if err != nil{
        panic(err)
    }
    defer f.Close()
    
    br :=bufio.NewReader(f)
    /*
    buffer := bytes.NewBuffer(make([]byte,1024))
    for{
         if part,prefix,err1 := br.ReadLine(); err1!=nil{
                   break
         }
         buffer.Write(part)
         if !prefix{
               lines = append(lines,buffer.String())
               buffer.Reset()
         }
    }
    fmt.Println(lines)
    */
    
    for {
        line,err1:=br.ReadString("\n")
        if err == os.EOF{
             break
        }else{
             fmt.Printf("%v",line)
        }
    }
}

 

    

分享到:
评论

相关推荐

    implant:用于在golang二进制文件中嵌入文件资源的简单实用程序

    植入允许您通过生成文件static.go来执行此操作,该文件包含特定目录层次结构的内容。 在运行时,您可以列出可用文件,并提取特定文件的内容。过时的通过添加用于将资源嵌入生成的二进制文件中的go embed语法,go v...

    大家一起学Golang——文件操作

    大家一起学Golang——文件操作 文件操作 对文件操作几乎每个编程语言都有,Go后端开发中对日志操作较多。 创建 、打开文件 创建两种方式: func Create(name string) (file *FIle, err Error) 返回文件对象,默认...

    golang简单获取上传文件大小的实现代码

    主要介绍了golang简单获取上传文件大小的方法,涉及Go语言文件传输及文件属性操作的相关技巧,需要的朋友可以参考下

    golang练习文件读写

    golang练习文件操作 package main import ( fmt io os ) func main(){ //新建文件 f1,err := os.Create(./ini.json) if err!=nil{ fmt.Println(Create err:,err) return } defer f1.Close() //为文件...

    asm2go:根据本机汇编代码自动生成golang汇编文件

    该项目旨在根据本机程序集和golang声明文件自动生成有效的Golang程序集,该文件主要用于在程序集中实现性能密集的复杂功能。 用法 asm2go需要2个文件,一个使用as (GNU汇编程序)正确进行汇编的本机汇编文件,以及...

    golang语言实现的文件上传与文件下载功能示例

    主要介绍了golang语言实现的文件上传与文件下载功能,结合实例形式分析了Go语言实现的文件传输相关操作技巧,需要的朋友可以参考下

    golang常用库之操作数据库的orm框架-gorm基本使用详解

    golang常用库:配置文件解析库-viper使用 golang常用库:操作数据库的orm框架-gorm基本使用 一:字段映射-模型定义 gorm中通常用struct来映射字段. gorm教程中叫模型定义 比如我们定义一个模型Model: type User ...

    golang简单读写文件示例

    主要介绍了golang简单读写文件的方法,实例分析了Go简单文件读取与写入操作的相关技巧,需要的朋友可以参考下

    Golang-Operate-Mysql:golang操作mysql的例子

    GOLANG操作Mysql示例1 官方参考文献地址:https://github.com/go-sql-driver/mysql2 databases.sql文件是新建数据库及其表的schema;3 main.go是golang操作Mysql的脚本示例;4 喜欢这个示例,请点亮小星星并关注我哦!

    golang的orm库gdao.zip

    gdao 是一个 golang 的 orm 库,gdao可以将数据库表映射生成相应的***.go文件(表名.go),之后操作数据库单表就直接操作相应的go文件即可。同时支持原生sql语句。注册数据源:3种方式,优先级从低到高 1、gdao.SetDB...

    MongoDB_Golang.zip

    故封装了连接池,数据库常用功能(增删改查,事务执行,管道聚合操作),并提供具体的使用和详细的demo,代码块注释和readme.txt文件中简要记录笔者从0-1的踩坑总结 二、这个目录涉及哪些主要包,提供哪些功能 ...

    golang 文件服务器-命令行工具

    经常进入容器操作,有时候会有在容器之间或在容器和本机之间传输文件的需求。于是用golang写了一个命令行工具,可以把当前目录启动为文件服务器的根目录。需要下载时就可以使用curl命令下载相应文件。 fileserver ...

    golang后端框架源码

    使用golang写的1个后端框架模块,可以直接在windows上编译使用,在linux下面请自测并调整。 已具有的功能: 1、取配置文件 2、操作数据库 3、socket管理 4、用户管理 5、业务功能实例

    使用数据库/ SQL进行Go的Oracle驱动程序-Golang开发

    go-oci8描述符合Go数据库/ sql界面的Golang Oracle数据库驱动程序安装安装Oracle完整客户端或Instant Client:https://www.oracle.com/technetwork/database/data go-oci8描述Golang符合以下条件的Oracle数据库驱动...

    Golang操作excel的方法

    正常情况下,创建一个表格的基本流程是打开 wps 点击新建,这时会默认创建一个 sheet,然后在该 sheet 中的第一行填写表头,接下来根据表头逐行填充内容,最后将文件另存为到硬盘的某个位置。这与 Golang 开源库创建...

    Go-一个用于在GO中操作字幕的库(.srt.stl.ttml.webvttetc.)

    一个用于在GO中操作字幕的库,它能够让你操作srt, stl, ttml and webvtt文件

    golang常用库之配置文件解析库-viper使用详解

    golang常用库:配置文件解析库-viper使用 golang常用库:操作数据库的orm框架-gorm基本使用 golang常用库:字段参数验证库-validator使用 一、viper简介 viper 配置管理解析库,是由大神 Steve Francia 开发,他在...

    Golang读写Excel的方法教程

    主要给大家介绍了关于Golang读写Excel的方法教程,golang操作excel利用的是Excelize,Excelize是Golang编写的一个用来操作 Office Excel 文档类库,基于微软的Office OpenXML标准,文中介绍的非常详细,需要的朋友...

    go-astisub:在GO中操作字幕(.srt,.ssa.ass,.stl,.ttml,.vtt(webvtt),图文电视等)

    它允许您webvtt操作srt , stl , ttml , ssa/ass , webvtt和teletext文件。 可用的操作是parsing , writing , syncing , fragmenting , unfragmenting , merging和optimizing 。 安装 要安装库和命令行...

    goutil:golang实用程序

    goutil golang实用程序 常用函数和工具类

Global site tag (gtag.js) - Google Analytics