美文网首页
{Go} 一个文件操作的低级错误

{Go} 一个文件操作的低级错误

作者: windflow | 来源:发表于2016-09-10 09:17 被阅读0次

    最近发现用Go做的工具,在替换文件内容时,末尾时不时出现多余的结束字符。经过检查,原因在于os.OpenFile 打开文件时,采用的 flag 设成了 O_WRONLY|O_CREATE,当文件原有内容长度大于写入内容长度时,末尾就会有未被替换的字符串。

    <node>abcde12345fg</node>    // old
    <node>abcde56789</node>     // replace
    <node>abcde56789</node>e>  // 这里e>看起来就像是多余字符
    

    所以替换应该采用 O_WRONLY|O_TRUNC。perm为 0666。或者直接采用 os.Create(file)。

    func Create(name string) (*File, error) {
        return OpenFile(name, O_RDWR|O_CREATE|O_TRUNC, 0666)
    }
    

    openfile的声明:

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

    相关文章

      网友评论

          本文标题:{Go} 一个文件操作的低级错误

          本文链接:https://www.haomeiwen.com/subject/gxzeettx.html