Golang语言的 os 包中OpenFile 函数,如下所示:

func OpenFile(name string, flag int, perm FileMode) (*File, error) {
}

其中 name 是文件的文件名,如果不是在当前路径下运行需要加上具体路径;flag 是文件的处理参数,为 int 类型,根据系统的不同具体值可能有所不同,但是作用是相同的。

  1. O_RDONLY:只读模式打开文件;
  2. O_WRONLY:只写模式打开文件;
  3. O_RDWR:读写模式打开文件;
  4. O_APPEND:写操作时将数据附加到文件尾部(追加);
  5. O_CREATE:如果不存在将创建一个新文件;
  6. O_EXCL:和 O_CREATE 配合使用,文件必须不存在,否则返回一个错误;
  7. O_SYNC:当进行一系列写操作时,每次都要等待上次的 I/O 操作完成再进行;
  8. O_TRUNC:如果可能,在打开时清空文件。

【实例】该段代码为博主测试用于模拟输出日志。

package main

import (
"bufio"
"fmt"
"io"
"os"
"strings"
"sync"
"time"
) func main() {
var list []string
mx := sync.Mutex{}
LogFileReading(&list,&mx) for _, v := range list {
if strings.Contains(v,"/coco-server/v2/user-getGroupList") || strings.Contains(v,"/coco-server/v2/userSession/isPCOnline") ||
strings.Contains(v,"/coco-server/msg-synOffLineMsg") || strings.Contains(v,"/coco-server/msg-updateMsgIndex") {
time.Sleep(1 * time.Second)
LogFileWrite(v)
} }
} func LogFileReading(list *[]string,mutex *sync.Mutex) {
filePath := "目录"
inputFile, inputError := os.OpenFile(filePath,os.O_RDONLY,0)
if inputError != nil {
fmt.Sprintf("An error occurred on opening the inputfile\n" +
"Does the file exist?\n ")
return
}
//及时关闭file
defer inputFile.Close()
//读取文件时,使用带缓存的 *Reader
inputReading := bufio.NewReader(inputFile)
for {
//ReadString将文件内容真正的读取出来
inputString, readerError := inputReading.ReadString('\n')
if readerError == io.EOF {
return
}
mutex.Lock()
*list = append(*list, inputString)
mutex.Unlock()
}
} func LogFileWrite(v string) {
filePath := "目录"
file, err := os.OpenFile(filePath, os.O_WRONLY|os.O_APPEND|os.O_CREATE, 0666)
if err != nil {
fmt.Println("File open failed!", err)
}
//及时关闭file
defer file.Close() //写入文件时,使用带缓存的 *Writer
write := bufio.NewWriter(file)
write.WriteString(v)
//Flush将缓存的文件真正写入到文件中
write.Flush()
}

  

转载请声明出处哦~,本篇文章发布于Biuget-Golang的博客:

https://www.cnblogs.com/Biuget-Golang/

记-Golang日志文件读取及写入操作的更多相关文章

  1. java===java基础学习(5)---文件读取,写入操作

    文件的写入读取有很多方法,今天学到的是Scanner和PrintWriter 文件读取 Scanner in = new Scanner(Paths.get("file.txt") ...

  2. testbench的设计 文件读取和写入操作 源代码

    十大基本功之 testbench 1. 激励的产生 对于 testbench 而言,端口应当和被测试的 module 一一对应.端口分为 input,output 和 inout 类型产生激励信号的时 ...

  3. 用Java实现对英文版《飘》的文件读取与写入操作

    从文件读入<飘>的英文版,并将结果输出到文件中 要求一: 实现对英文版<飘>的字母出现次数统计 package File; import java.io.FileInputSt ...

  4. Apache commons-io实现单文件读取和写入

    Apache commons-io提供了很多类,这里只介绍FileUtils类. FileUtils类提供了一些操作文件对象的实用方法,包括文件的读取.写入.复制和比较等. 比如逐句读取和写入一个文件 ...

  5. HDFS数据流-剖析文件读取及写入

    HDFS数据流-剖析文件读取及写入 文件读取 1. 客户端通过调用FileSystem对象的open方法来打开希望读取的文件,对于HDFS来说,这个对象是分布式文件系统的一个实例.2. Distrib ...

  6. python文件读取和写入案例

    python文件读取和写入案例  直接上代码吧 都是说明 百度上找了很多,最终得出思路 没有直接可以读取修改的扩展,只能先读取,然后复制一份,然后在复制出来的文件里面追加保存 然后删除读的那个,但是缺 ...

  7. Java底层代码实现单文件读取和写入(解决中文乱码问题)

    需求: 将"E:/data/车站一次/阿坝藏族羌族自治州.csv"文件中的内容读取,写入到"E:/data//车站一次.csv". 代码: public cla ...

  8. Delphi txt文件读取及写入

    简介:Delphi支持三种文件类型:文本文件.记录文件.无类型文件.文本文件的读...   在进行win32开发中对文件的读写是最常用的操作之一 Delphi 支持三种文件类型:  文本文件.记录文件 ...

  9. java文件创建、删除、读取、写入操作大全

    一.获得控制台用户输入的信息 public String getInputMessage() throws IOException...{ System.out.println("请输入您的 ...

随机推荐

  1. 如何实现ARC中weak功能?

    原文链接 我们都知道ARC中weak与assign或者说unsafe_unretained最大的不同就是设置weak属性后,系统会在对象被释放后自动将指向对象的指针置为nil,而assign则会产生一 ...

  2. 服务器安装centos8提示显示器不支持输出的分辨率

    今天机房老服务器安装CENTOS8时启到到引导界面,显示器就提输出分辩率为1920*1080 60MHZ ,这怎么能支持.本想装了显卡来装,拆机一看我去不支持. 后来在网上一查才知道有解决方案. 可以 ...

  3. DataFrame计算corr()函数计算相关系数时,出现返回值为空或NaN的情况+np.log1p()

  4. CF1476D题解

    场上 \(O(n)\) 切掉的一道挺水的题. 首先向左走和向右走,一个很明显的结论是,如果向左走了一段距离又回到原点,那么方向是不会变的,所以只需要求出能够向左走的最远距离和向右走的最远距离,加起来即 ...

  5. mybatis的几种like查询

    oracle数据库: Java代码 SELECT * FROM user WHERE name like CONCAT('%',#{name},'%') 或 Java代码 SELECT * FROM ...

  6. FPGA设计流程

    今天学习了FPGA设计流程的视频,我理解要做一个完整的FPGA系统,所要经历的步骤,先将它简单总结如下: 我在对上面的流程图进行解释: 第一:设计定义就是我们这个FPGA系统或者FPGA设计所要实现的 ...

  7. java反射和动态代理实现与原理详细分析

    关于Java中的动态代理,我们首先需要了解的是一种常用的设计模式--代理模式,而对于代理,根据创建代理类的时间点,又可以分为静态代理和动态代理. 一.代理模式    代理模式是常用的java设计模式, ...

  8. 什么是基于Java的Spring注解配置? 给一些注解的例子?

    基于Java的配置,允许你在少量的 Java注解 的帮助下,进行你的大部分Spring配置而非通过XML文件. 以@Configuration 注解为例,它用来标记类可以当做一个bean的定义,被Sp ...

  9. Mac SVN Cornerstone 安装使用详解

    Cornerstone 是收费软键,这里提供一个破解版 ,安装后需要输入安装密码:www.ifunmac.com 链接:https://pan.baidu.com/s/1LqY2s8vEJAQ9JJh ...

  10. 提交Form表单,submit之前做js判断处理

    效果: 在点击提交按钮时,首先进行js判断, 如果不符合条件,则alert出提示信息,并return false. 主要点就在于给form表单添加一个onsubmit事件. 在onsubmit事件中定 ...