`
david_je
  • 浏览: 373155 次
  • 性别: 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)
        }
    }
}

 

    

分享到:
评论

相关推荐

    golang使用bass库播放mp3文件

    在Golang中,如果你想要实现音频播放功能,特别是在处理MP3文件时,可以利用外部库,比如BASS库。BASS是一个广泛使用的音频处理库,它提供了强大的音频播放、流处理和格式转换功能。在Golang中使用BASS库通常需要...

    golang写的文件批量删除工具delete_tool.exe

    delete_tool.exe是一个可执行文件,它利用了Golang强大的文件操作能力,能够快速遍历指定目录,对其中的文件进行批量删除操作。这个工具的出现,极大地简化了用户手动删除大量文件的繁琐过程,提升了工作效率。 ...

    基于Golang和Vue的文件管理系统源码.zip

    这是一个基于Golang后端和Vue.js前端开发的文件管理系统的源码包。下面将详细介绍这个系统的核心技术和实现原理。 **Golang(Go语言)** Golang是Google开发的一种静态类型、编译型、并发型、垃圾回收的编程语言。...

    Go-简单易用的文件传输平台(支持P2P高速传输超大文件).后端使用Golang前端React.

    Go的`os`和`io`包提供了基本的文件操作API,而`fs`包则提供了更高级的抽象,如文件描述符和文件系统接口。此外,可以使用数据库(如SQLite或MySQL)来持久化文件元数据,以支持快速查询和权限管理。 **WebRTC与P2P...

    golang实现的文件去重小工具,有git提交历史、注释、windows,linux可执行文件。

    本文将详细讲解基于Golang实现的文件去重小工具,以及与之相关的技术知识点,包括Git提交历史查看、代码注释、跨平台可执行文件构建、Excel数据处理和Docker容器化部署。 首先,我们要讨论的是Golang语言本身。...

    循环鼠标自动点击功能- Golang实现

    以下是一个简单的示例,展示了如何使用Golang进行鼠标操作: ```go package main import ( "time" "github.com/go-robotstxt/robotstxt" ) func main() { for { // 模拟鼠标点击 robotstxt.ClickMouse...

    Source Insight go语言 解析文件 golang.xclf

    本文将深入探讨如何在Source Insight中配置和使用Go语言解析功能,以及解析文件`golang.xclf`的作用。 首先,让我们了解`golang.xclf`文件。这是一个自定义语言格式文件,用于Source Insight识别和解析特定语言的...

    golang 树莓派安装文件 17.6版本

    树莓派是一种基于Linux的操作系统,通常使用Raspberry Pi OS(以前称为Raspbian),它是一个基于Debian的轻量级发行版。为了在树莓派上安装Go 17.6,我们首先需要确保系统是最新的。 1. 更新系统: 在命令行终端中...

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

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

    golang解析数字证书

    对于解密操作,你可以使用`crypto/rsa`包。 ```go pub, err := x509.ParseRSAPublicKeyFromPEM(publicKeyBytes) if err != nil { // 解析公钥失败 } decryptedData, err := rsa.DecryptPKCS1v15(rand.Reader...

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

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

    GoLang Notepad++语法高亮配置文件

    GoLang Notepad++语法高亮配置文件是一种优化编程体验的方式,尤其对于经常使用Notepad++编辑Go语言代码的开发者来说,这是一个非常实用的功能。本文将详细介绍如何在Notepad++中设置Go语言的语法高亮,并探讨其重要...

    golang实现ftp上传资源

    在上传多个文件或处理多个FTP任务时,可以使用goroutine并配合channel实现高效的并发操作。 6. **错误处理**:在实现FTP功能时,必须处理各种可能出现的错误,如网络连接失败、认证错误、文件传输错误等。Go的错误...

    使用golang获取linux上文件的访问/创建/修改时间

    在Linux操作系统中,获取文件的访问、创建和修改时间是一项基本的文件操作。Golang作为一种强大的系统级编程语言,...通过学习和实践,我们可以更好地掌握Golang在处理文件系统操作方面的功能,提高我们的开发效率。

    Go-mini-golang包解析ini风格配置文件

    `Go-mini-golang包`为Go开发者提供了一种方便的方式来读取和操作这些文件。以下是该库的主要功能: 1. **加载配置文件**:库提供了函数用于加载ini配置文件到内存中,例如`LoadConfigFile()`函数,它可以将指定路径...

    golang路由,集成mysql,redis。读取配置文件信息

    在本文中,我们将深入探讨如何使用Golang来构建一个包含路由转发、MySQL集成以及Redis连接的应用。我们将重点关注Golang的特性,如路由处理、数据库连接、并发处理(goroutines)以及通道(chan)的使用。 首先,让...

    hfsync:golang单向简单http文件同步工具(支持文件忽略,速度限制和http auth)

    - **并发性**:Golang的goroutine和channel使得在处理多文件同步时能实现高效的并发操作。 - **跨平台**:Golang的编译器生成的可执行文件无需额外依赖,可在多种操作系统上运行。 - **内存管理**:Golang的垃圾回收...

    [Golang]视频搜索脚本

    1. **文件系统操作**:Golang的`os`和`path/filepath`库提供了对文件系统的基本操作。`filepath.Walk()`函数可以递归地遍历指定的目录,访问每个文件和子目录,这正是搜索视频文件的基础。 2. **文件类型判断**:...

    golang环境配置及对接s3对象存储demo手册及源代码

    - **编写代码**:创建一个新的Go文件,例如`golang-demo.go`,并引入AWS SDK中的S3包。接着,你可以使用SDK提供的函数来执行操作,如上传、下载、列举或删除S3对象。以下是一个简单的示例: ```go package main ...

    golang实现的csv及txt转excel工具.zip

    该压缩包文件“golang实现的csv及txt转excel工具.zip”包含了一个使用Go语言(Golang)编写的实用程序,用于将CSV(逗号分隔值)和TXT(纯文本)文件转换为Excel格式。这个工具已经编译为可执行文件(exe),这意味...

Global site tag (gtag.js) - Google Analytics