首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何获得实现bufio.Writer的io.WriteCloser

如何获得实现bufio.Writer的io.WriteCloser
EN

Stack Overflow用户
提问于 2017-03-30 02:49:45
回答 1查看 5.5K关注 0票数 6

我希望以非缓冲的方式扩展将数据写入文件的现有代码。

代码要求编写器实现io.WriteCloser接口。因此,仅用bufio.Writer包装现有文件是行不通的,因为它没有实现这个接口。

如何使bufio.Writer实现并将必要的密切调用传递给底层文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-30 03:01:32

io.WriteCloser是接口:

代码语言:javascript
运行
AI代码解释
复制
type WriteCloser interface {
        Writer
        Closer
}

它最终“规定”了这两种方法:

代码语言:javascript
运行
AI代码解释
复制
Write(p []byte) (n int, err error)

Close() error

bufio.Writer已经有了一个Write()方法,因此要使它成为WriteCloser,只需要一个Close()方法。

使用noop bufio.Writer方法扩展Close()

代码语言:javascript
运行
AI代码解释
复制
type MyWriteCloser struct {
    *bufio.Writer
}

func (mwc *MyWriteCloser) Close() error {
    // Noop
    return nil
}

*MyWriteCloser类型的值现在是WriteCloser。这是最简单的扩展。使用它:

代码语言:javascript
运行
AI代码解释
复制
bw := bufio.NewWriter(w)

mwc := &MyWriteCloser{bw}

虽然我们可以-and,但我们应该添加一个更有意义的Close()方法。当bufio.Write进行缓冲写入时,我们应该在声明它关闭之前刷新它的内部缓冲区:

代码语言:javascript
运行
AI代码解释
复制
func (mwc *MyWriteCloser) Close() error {
    return mwc.Flush()
}

还请注意,由于bufio.Write不能关闭(不提供Close()方法),这不会关闭它的底层io.Writer,这只是为了符合io.Closerio.WriteCloser接口。

如果您还想关闭基础文件,您还必须存储它,并且在调用bufio.Flush() (确保所有内容都被写入)之后,如果它没有返回任何错误,那么您也可以继续关闭该文件。

这就是它的样子:

代码语言:javascript
运行
AI代码解释
复制
type MyWriteCloser struct {
    f *os.File
    *bufio.Writer
}

func (mwc *MyWriteCloser) Close() error {
    if err := mwc.Flush(); err != nil {
        return err
    }
    return mwc.f.Close()
}

使用它:

代码语言:javascript
运行
AI代码解释
复制
// Open a file:
f, err := os.Open("myfile.txt")
if err != nil {
    panic(err) // Handle error
}

mwc := &MyWriteCloser{f, bufio.NewWriter(f)}
defer mwc.Close()

// use mwc
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43115699

复制
相关文章
php执行系统外部命令
提供4种方法: - exec()、passthru()、system()、 shell_exec()。 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下: disable_functions = 如果"disable_functions="后面有接上面四个函数,将其删除。 默认php.ini配置文件中是不禁止你调用执行外部命令的函数的。 方法一:exec() function exec(string $command,array
猿哥
2019/08/01
1.1K0
PHP实现执行外部程序的方法详解
在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用shell命令、shell脚本、可执行程序等等,今天在源码中了解了一下PHP执行外部程序的方法,借此机会顺便整理一下。
用户8826052
2021/07/13
1K0
Kubernetes(三) 如何从外部访问服务
.example_responsive_1 { width: 200px; height: 50px; } @media(min-width: 290px) { .example_responsive_1 { width: 270px; height: 50px; } } @media(min-width: 370px) { .example_responsive_1 { width: 339px; height: 50px; } } @media(min-width: 500px) { .example_responsive_1 { width: 468px; height: 50px; } } @media(min-width: 720px) { .example_responsive_1 { width: 655px; height: 50px; } } @media(min-width: 800px) { .example_responsive_1 { width: 728px; height: 50px; } } (adsbygoogle = window.adsbygoogle || []).push({});
草堂笺
2019/12/20
2.9K0
php如何实现延迟执行
有时候我们需要某个功能或程序延迟几秒或一段时间执行,JS 的话,使用 setTimeout 可以实现
小鑫
2022/04/24
2K0
php代码执行函数_php代码如何运行
大家好,又见面了,我是你们的朋友全栈君。 ** php代码执行函数解析 ** ​一、代码执行漏洞原理: 用户输入的数据被当做后端代码进行执行 <?php @eval($_REQUEST[8])?>
全栈程序员站长
2022/11/10
16.1K0
php代码执行函数_php代码如何运行
从 JavaScript 的单线程执行说起
希望在马山可以弹出一个警告提示框 “a” 来,但是始终没有来;而且,在 FireFox 中跑还得到了这样的提示,并提示你是否要终止这段脚本的执行,遇事我选择终止以后,“a” 倒是弹出来了,但是 “b” 却弹不出来了:
四火
2022/07/18
4140
从 JavaScript 的单线程执行说起
python 执行外部命令
1、os.system(command)或者os.popen(..........)
py3study
2020/01/07
1K0
从并发处理谈PHP进程间通信(一)外部介质
枕边书
2018/01/04
1.3K0
PHP执行系统外部命令函数:exec()、passthru()、system()、shell_exec()
php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()。 在开始介绍前,先检查下php配置文件php.ini中是有禁止这是个函数。找到 disable_functions,配置如下:
全栈程序员站长
2022/07/08
1.6K0
php执行系统外部命令函数:exec()、passthru()、system()、 shell_exec()
php提供4种方法执行系统外部命令:exec()、passthru()、system()、 shell_exec()
Yiiven
2022/12/15
1.1K0
如何在 Chrome 中执行 JavaScript 代码
要在浏览器中执行 JavaScript 脚本,首先你的浏览器得支持。现在主流推荐 Chrome 浏览器,也可以使用基于 Chromium 的 Edge 浏览器。下面来介绍如何在 Chrome 中打开开发者工具,以及如何在开发者工具中运行调试 JavaScript 代码。
村雨遥
2022/03/14
6.4K0
如何在 Chrome 中执行 JavaScript 代码
JavaScript代码是如何被执行的
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。根据语言的执行流程,可以把语言分成编译型语言和解释型语言。
木子星兮
2020/07/16
1.1K0
python 外部命令执行--OS
 Python 也可以通过os、subprocess执行外部shell命令对POSIX类型系统进行操作。
py3study
2020/01/08
3360
Python 执行Shell 外部命令
1、os.system() 此方法执行的外部程序,会将结果直接输出到标准输出。os.system的返回结果为执行shell 的 $? 值。 因此请执行没有输出结果的程序时适合使用此方法。如touch
py3study
2020/01/07
1.2K0
如何从JavaScript跨越到TypeScript [基础进阶知识点]
一致,都会导致报错。 建议使用npm 全局安装typeScript 然后使用 tsc *.ts 进行编译TS文件
Peter谭金杰
2019/08/02
1.3K0
手把手教会你JavaScript引擎如何执行JavaScript代码
JavaScript 在运行过程中与其他语言有所不一样,如果不理解 JavaScript 的词法环境、执行上下文等内容,很容易会在开发过程中产生 Bug,比如this指向和预期不一致、某个变量不知道为什么被改了,等等。所以今天我们就来聊一聊 JavaScript 代码的运行过程。
前端皮皮
2022/08/17
4600
手把手教会你JavaScript引擎如何执行JavaScript代码
从CPU如何执行进程说起
CPU妈妈:大家好,我叫CPU,我就是计算机的大脑,我能够发出各种命令,控制整个计算机。
xujjj
2019/06/29
7820
从CPU如何执行进程说起
【说站】php Zend引擎如何执行代码
以上就是php Zend引擎执行代码的方法,希望对大家有所帮助。更多php学习指路:php教程
很酷的站长
2022/11/24
1K0
【说站】php Zend引擎如何执行代码
linux 如何关闭正在执行的php脚本
1. 如果不是后台执行,直接ctrl+c 就终止执行 2. 如果是后台执行 首先执行:sudo ps –ef|grep php
全栈程序员站长
2022/07/11
2.5K0
点击加载更多

相似问题

如何从外部HTML执行Javascript

34

如何从外部文件显示/执行PHP?

48

从php引用外部javaScript

53

如何从javascript函数执行php?

50

从php执行javascript

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档