[golang] golang文件读写 os.OpenFile(fileName,os.O_APPEND|os.O_WRONLY,os.ModeAppend)

2023-05-16

[golang] golang文件读写 os.OpenFile(fileName,os.O_APPEND|os.O_WRONLY,os.ModeAppend)

读写文件要用到的OS包


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

该方法第一个参数为文件路径,第二个参数控制文件的打开方式,第三个参数控制文件模式

可用的打开方式有


// Flags to OpenFile wrapping those of the underlying system. Not all
// flags may be implemented on a given system.
const (
    // Exactly one of O_RDONLY, O_WRONLY, or O_RDWR must be specified.
    // 只读模式
    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.
    // The remaining values may be or'ed in to control behavior.
    // 追加内容
    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  // truncate regular writable file when opened.
)  

打开模式


// The defined file mode bits are the most significant bits of the FileMode.
// The nine least-significant bits are the standard Unix rwxrwxrwx permissions.
// The values of these bits should be considered part of the public API and
// may be used in wire protocols or disk representations: they must not be
// changed, although new bits might be added.
const (
    // The single letters are the abbreviations
    // used by the String method's formatting.
    // 文件夹模式
    ModeDir        FileMode = 1 << (32 - 1 - iota) // d: is a directory
    // 追加模式
    ModeAppend                                     // a: append-only
    // 单独使用
    ModeExclusive                                  // l: exclusive use
    // 临时文件
    ModeTemporary                                  // T: temporary file; Plan 9 only
    // 象征性的关联
    ModeSymlink                                    // L: symbolic link
    // 设备文件
    ModeDevice                                     // D: device file
    // 命名管道
    ModeNamedPipe                                  // p: named pipe (FIFO)
    // Unix 主机 socket
    ModeSocket                                     // S: Unix domain socket
    // 设置uid
    ModeSetuid                                     // u: setuid
    // 设置gid
    ModeSetgid                                     // g: setgid
    // UNIX 字符串设备,当设备模式是设置unix
    ModeCharDevice                                 // c: Unix character device, when ModeDevice is set
    // 粘性的
    ModeSticky                                     // t: sticky
    // 非常规文件;对该文件一无所知
    ModeIrregular                                  // ?: non-regular file; nothing else is known about this file

    // bit位遮盖,不变的文件设置为none
    // Mask for the type bits. For regular files, none will be set.
    ModeType = ModeDir | ModeSymlink | ModeNamedPipe | ModeSocket | ModeDevice | ModeCharDevice | ModeIrregular
    // 权限位
    ModePerm FileMode = 0777 // Unix permission bits
)  

创建一个文件并追加内容


package main

import (
    "os"
)
func main() {
    fname := "/tmp/t.txt"
    f, err := os.OpenFile(fname, os.O_CREATE|os.O_RDWR|os.O_APPEND, os.ModeAppend|os.ModePerm)
    if err != nil {
        fmt.Println(err)
    }
    f.WriteString("test")
    f.Close()
}  

删除文件

os.Remove(fname)

创建目录

dname :="/tmp/d"

os.Mkdir(dname,os.ModeDir|os.ModePerm)

创建完整目录路径,即中间目录不存在的话也一起创建


os.MkdirAll(dname,os.ModeDir|os.ModePerm)  

golang os.OpenFile几种常用模式

os.O_WRONLY | os.O_CREATE | O_EXCL           【如果已经存在,则失败】

os.O_WRONLY | os.O_CREATE                         【如果已经存在,会覆盖写,不会清空原来的文件,而是从头直接覆盖写】

os.O_WRONLY | os.O_CREATE | os.O_APPEND  【如果已经存在,则在尾部添加写】

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[golang] golang文件读写 os.OpenFile(fileName,os.O_APPEND|os.O_WRONLY,os.ModeAppend) 的相关文章

  • 奇怪的jquery错误,当在使用wrap()之后尝试ap​​pend()时[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 使用 jQuery 我 创建了一个容器 用它包裹一个元素 通过将对象传递给 jQuery 选择器来选择容器 并尝试向容器
  • C# 将字节数组附加到现有文件

    我想将字节数组附加到已经存在的文件中 C test exe 假设以下字节数组 byte appendMe new byte 1000 File AppendAllBytes C test exe appendMe Something lik
  • go-carbon v2.3.4 发布,轻量级、语义化、对开发者友好的 Golang 时间处理库

    carbon 是一个轻量级 语义化 对开发者友好的 golang 时间处理库 支持链式调用 目前已被 awesome go 收录 如果您觉得不错 请给个 star 吧 github com golang module carbon gite
  • go cannot find package “github.com/gorilla/websocket“解读

    Go无法找到包 github com gorilla websocket 的解决方案 在Go开发过程中 我们经常会依赖第三方库来简化开发工作 而使用 go get 命令安装这些库时 有时候我们可能会遇到类似于以下错误的情况 plaintex
  • 使用 jQuery 插入 HTML

    如果我有一个 HTML 块 例如 div div div div
  • 将列表元素追加到python中的列表列表中

    给出以下列表 list1 1 2 3 4 5 6 7 8 list2 10 11 12 13 最好的改变方式是什么list1所以它变成了Python中的以下列表 1 2 10 3 4 11 5 6 12 7 8 13 您可以使用zip x
  • 如何附加到 Android MediaRecorder 输出文件

    我想知道是否有一种方法可以告诉 MediaRecorder 附加到现有的音频文件 而不是从头开始 换句话说 我想使用现有文件调用 setOutputFile 并将新音频附加到该文件而不是删除它 Android MediaRecorder 不
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 文件写入 - PrintStream 附加

    我试图将一些信息附加到文本文件中 但该文件仅显示最后写入的元素 有许多Engineers 但它仅将读取的最后一个元素打印到文件中 例如 Engineer e new Engineer firstName surName weeklySal
  • 如何将字符串连接到现有文件?

    我有一个文本文件 其中有内容 我想向其中附加文本 这是我的代码 File outputFile new File hello out outputFile createSync List
  • 如何在 jQuery 中引用附加项?

    我想在 jquery 中创建并附加一个项目 同时保存对它的引用 var buy img src img buy now png var buy buy appendTo body buy html hello 我期待像上面这样的事情能够发挥
  • 如何在 JavaScript (JQuery) 中构建“大”div 结构?

    我需要制作大的 DIV 结构并将它们附加到包装器中 但到目前为止我所看到的总是关于附加oneDIV 元素转换为另一个元素 有一个空的 DIV Wrapper 需要填充 大 DIV Elements div class PostWrapper
  • 将字符串数据附加(添加)到 Android 应用程序中的 SD 卡文本文件

    这里只是简单说一下 虽然我的代码似乎可以使用写入内部或外部 SD 卡 存储中的 mytext txt 文件的标准技术将字符串数据等存储在新文件中 但对我来说 我的应用程序更有用通过重复允许用户重复该过程 例如用户输入和按钮保存 或关闭应用程
  • 如何在 Python 中将一个字符串附加到另一个字符串?

    如何有效地将一个字符串附加到另一个字符串 有没有更快的替代方案 var1 foo var2 bar var3 var1 var2 For handling multiple strings in a list see How to conc
  • 将字符串附加到 IronScheme 中的现有文本文件

    我们正在尝试使用 IronScheme 构建一个日志文件 并且我们已经使用racket 为其编写了代码 它在球拍中工作正常 但 IronScheme 会抛出错误 这是我们目前所拥有的 define write to log lambda w
  • 从Series中获取索引和值

    我在 pandas 中进行选择和索引时有点缓慢 我有一个日期时间系列 我试图从中选择某些元素及其日期时间索引 以便将它们附加到新系列中 例子 import pandas as pd x pd Series 11 12 13 14 15 16
  • Ajax 追加加载

    它必须是jquery 我有文件 text html 其中有 6 个 div a b c d e f 在另一个文件中 我有一个 div 我喜欢它将 a b c d e f 的内容填充到该单个 div 中 我尝试过 load 但 b 替换了 a
  • Android 追加文本文件

    我试图将对话框选择器中的唤醒时间和睡眠时间记录到这样的文本文件中 但是对方法 commitToFile2 的调用不会附加文本文件 savedData txt 我知道这段代码非常非常肮脏 我是 Java 新手 所以任何其他建议将不胜感激 pa
  • JQuery:帮助使用 .each() 和 .append() 将图片添加到 HTML

    需要修复的简单错误 我不知道出了什么问题 我需要将同一张图片附加到 HTML 中的多个 五个 div 由于某种原因 我的代码将同一张图片附加到每个 div 五次 更清楚地说 五个 div 中的每一个都需要一张图片 现在 这五个人每人都有五张
  • 使用 Jquery 附加链接

    我正在尝试根据您所在的页面添加指向我的页面的链接 我使用 Squarespace 来构建这个网站 因此对我来说最简单的方法是使用 Javascript 或 Jquery 我认为我缺少的这个语法有问题 我已经尝试用 来打破引号 但这不起作用

随机推荐

  • 程序的几种常用格式文件

    span class hljs keyword int span span class hljs keyword global span span class hljs keyword int span calculate span cla
  • 2020年北航计算机学院面向对象第一单元总结

    文章目录 一 基于度量来分析自己的程序结构第一次作业第二次作业第三次作业 二 分析自己程序的bug三 分析自己发现别人程序bug所采用的策略四 应用对象创建模式来重构五 对比和心得体会 一 基于度量来分析自己的程序结构 第一次作业 第一次作
  • keil调试模式下能运行 烧录到板子中不能运行

    一 程序中使用了printf函数 1 现象 在debug模式下可以运行 xff0c 脱离debug模式无法运行 2 原因 在程序中使用了printf函数 xff0c 但是却没有包含keil的微库 xff0c 或者对于printf函数没有进行
  • 洛谷P4180 次小生成树学习

    题目链接 BJWC2010 严格次小生成树 洛谷 严格次小生成树是指第二小的生成树 总的思路是先求最小生成树 xff08 设最小生成树的总花费sum xff09 xff0c 把每条边都标记 xff0c 再遍历没被标记的边 xff0c 此时这
  • Codeforces 758D 贪心

    Ability To Convert time limit per test 1 second memory limit per test 256 megabytes input standard input output standard
  • Docker入门

    官网地址 概述 场景1 xff1a 不同语言开发的应用程序部署到同一操作系统上 xff0c 往往操作系统需要根据相应的语言来配置 xff0c 如果配置发生冲突就无法完成部署 这时候我们需要对这2个应用进行隔离 xff0c 使它们运行所依赖的
  • Debian11系统安装

    下载 下载地址 VMware创建虚拟机 1 Host only模式 xff1a 所有虚拟机可以相互访问 xff0c 但和真实的物理网络环境是隔离开的 xff0c 此模式下的IP信息是由host only虚拟网络的DHCP服务器来分配的 xf
  • Debian11之Jdk安装

    参考这里
  • Debian11之 Containerd1.7.x 安装及配置

    官网 介绍 1 K8S发布的CRI xff08 Container Runtime Interface xff09 统一了容器运行时接口 xff0c 凡是支持CRI的容器运行时的皆可作为K8S的底层容器运行时 xff0c 而Docker 没
  • Debian11之基于kubeadm安装K8S(v1.26.0) 集群

    硬件要求 1 Master主机 xff1a 2核CPU 4G内存 20G硬盘 2 Node主机 xff1a 4 43 核CPU 8G 43 内存 40G 43 硬盘 2 集群中的所有机器的网络彼此均能相互连接 xff08 公网和内网都可以
  • Debian11之Rancher2.7.x安装

    前言 Rancher 是一个为开源容器打造的容器管理平台 Kubernetes 管理工具 xff0c 使得开发者可以随处运行 Kubernetes xff08 Run Kubernetes Everywhere xff09 xff0c 满足
  • AirSim学习(1)-介绍,安装,unity测试

    home AirSim是一款基于虚幻引擎的无人机 汽车等模拟器 我们现在也有一个实验性的Unity版本 它是开源的 xff0c 跨平台的 xff0c 支持使用流行的飞行控制器 如PX4和ArduPilot 进行软件在环模拟 xff0c 并支
  • 华为设备默认console密码

    admin 64 huawei com Admin 64 huawei com Admin 64 huawei huawei com huawei 64 123 huawei Change Me
  • 华为交换机批量加入 Vlan 方法

    华为交换机单独加入vlan太麻烦 xff0c 思科有批量加入vlan的方法 xff0c 华为也有 要求 1 6口划分到vlan2 6 12口划分到vlan3 13 18口划分到vlan4 19 24口划分到vlan5 25 26 加入tru
  • [golang]Go常见问题:# command-line-arguments: ***: undefined: ***

    今天遇见一个很蛋疼的问题 xff0c 不知道是不是我配置的问题 xff0c IDE直接run就报错 问题描述 在开发代码过程中 xff0c 经常会因为逻辑处理而对代码进行分类 xff0c 放进不同的文件里面 xff1b 像这样 xff0c
  • Qt之利用系统空闲

    Qt之利用系统空闲 如何利用系统空闲 xff0c 处理指定函数 xff1f To make your application perform idle processing by executing a special function w
  • [linux][c++]linux c++ 通过xcb库获取屏幕大小

    linux c 43 43 通过xcb库获取屏幕大小 include lt stdio h gt include lt xcb xcb h gt clang 43 43 main cpp o main 96 pkg config cflag
  • 金蝶K/3 跟踪语句_业务单据

    跟踪语句 业务单据 BOM select from t TableDescription where Ftablename like 39 ICBOM 39 select from t FieldDescription where FTab
  • [python][企业微信]企业微信自动打卡Python脚本,价值一万元的自动打卡脚本

    coding utf 8 import datetime import os import random import time import schedule 引入uiautomator库 from pip vendor import r
  • [golang] golang文件读写 os.OpenFile(fileName,os.O_APPEND|os.O_WRONLY,os.ModeAppend)

    golang golang文件读写 os OpenFile fileName os O APPEND os O WRONLY os ModeAppend 读写文件要用到的OS包 func OpenFile name string flag