打开一个文件并写一些词然后读取它什么也得不到

TiDao

代码是这样的。我可以无错误地运行代码。读取文件时,什么也得不到

    file,err := os.OpenFile("writeAt.txt",os.O_CREATE|os.O_APPEND|os.O_RDWR,777)
    if err != nil{
        panic(err)
    }
    fmt.Println(file)
    reader := bytes.NewReader([]byte("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n"))
    _,err = reader.WriteTo(file)
    if err != nil{
        panic(err)
    }
    fmt.Println(file)
    reader = bytes.NewReader([]byte("bbbbbbbbbbbbbbbbbbbb\n"))
    _,err = reader.WriteTo(file)
    if err != nil{
        panic(err)
    }
    writer := bufio.NewWriter(os.Stdout)
    n,err := writer.ReadFrom(file)
    if err != nil{
        panic(err)
    }
    fmt.Println("n",n)
伊萨

当您打开一个文件并对其进行写入时,文件指针(决定读取和写入发生的位置)会不断增加,因此下一次写入始终写入最后。没有单独的“读取”和“写入”指针,只有一个指针用于读取和写入。在你写完东西之后,如果你想阅读你刚刚写到文件中的内容,你必须将指针“倒回”到开头。

这意味着在写入后尝试读取将不会读取任何内容,因为文件指针指向文件末尾。关闭并重新打开文件会将指针定位到文件的开头,这就是您在重新打开后成功读取文件的原因。

要在不重新打开的情况下读取写入的内容,请使用 将指针设置为文件开头File.Seek()

例如:

if _, err := file.Seek(0, io.SeekStart); err != nil {
    log.Printf("Failed to seek: %v", err)
}

// Now you can read content written to it previosly

还有一件更重要的事情。引自File.Seek()

未指定对使用 O_APPEND 打开的文件的 Seek 行为。

由于您确实使用 来打开文件O_APPEND,因此上述操作可能会成功,也可能不会成功。因此,O_APPEND如果您想重新阅读所写的内容,请不要使用或者,如果您必须使用O_APPEND,则必须重新打开该文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在JS函数中打开一个新的HTML页面,然后在上面写一些HTML

我想读取文件并写入另一个文件。基本上,我想做一些算术并写一些其他专栏

Python csv 文件 - 打开一个 csv 文件并从 2 列中获取所有信息,获取唯一值,然后删除一些回复(没有 Pandas)

当我打开一个文本文件时,它只读取最后一行

为什么要创建一个空类,然后实例化它并设置一些属性?

写入 JSON 文件,然后读取同一个文件并获取“JSONDecodeError:额外数据”

为什么`:tab all'在新标签页中打开大多数文件,而在一个标签页中水平打开一些文件呢?

打开一个dbm文件

打开一些文件,等待约30分钟,然后在C ++中重新启动它们

如何让appmaker中的按钮执行一些操作并在之后打开一个URL

在同一个文件上写一些东西之后如何在python中读取文本文件

打开一个新窗口然后提交表单

C#打开一个表单并关闭它

我需要打开一个页面,然后在一定时间后重新加载它

写一个列表然后反转它返回

如果没有数据,则创建一个文本文件,然后读取以检索数据

如何制作一个文件来打开终端并运行一些命令

打开一个“ PNG”文件,然后是numpy,然后是base64,但是图像未显示?

打开一个带有.hta文件的文件

如何写一些文件?

为什么我的应用程序崩溃时,它试图打开一个文件,手机重启后?

Eclipse在系统编辑器中自动打开一些文件

RStudio 不会打开一些文本文件

当某个进程打开一个文件时, unlink() 会做什么?

为什么不是打开一个文本文件给我想要的输出?

IntellJ IDEA - 无法打开一些依赖 jars

从Vim打开一个现有文件

打开一个在Python中是符号链接的文件

VBScript创建并打开一个新文件