- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
package main
import (
"fmt"
"os"
"io"
)
func main() {
f1,_ := os.Create("f1")
io.WriteString(f1, "some content")
buf := make([]byte, 8)
f1.Read(buf)
fmt.Println(buf)
}
我创建一个文件,然后写入一些字符串。然后读出来,但是没有内容。
输出是:
go run test.go
[0 0 0 0 0 0 0 0]
最佳答案
在 Go 中,不要忽略错误。写入和读取文件时,请跟踪当前文件偏移量。
写入后偏移量位于文件末尾,您需要在读取前将偏移量设置为文件开头。例如,带有诊断信息,
package main
import (
"fmt"
"io"
"os"
)
func main() {
f1, err := os.Create("f1")
if err != nil {
fmt.Println(err)
return
}
defer f1.Close()
// The file offset is its current location.
s, err := f1.Seek(0, io.SeekCurrent)
if err != nil {
fmt.Println(s, err)
return
}
fmt.Println("offset:", s)
// writing takes place at the file offset, and
// the file offset is incremented by the number of bytes actually
// written.
n, err := f1.WriteString("some content")
fmt.Println("write: ", n, err)
if err != nil {
fmt.Println(n, err)
return
}
// The file offset is its current location
s, err = f1.Seek(0, io.SeekCurrent)
if err != nil {
fmt.Println(s, err)
return
}
fmt.Println("offset:", s)
buf := make([]byte, 8)
// the read operation commences at the
// file offset, and the file offset is incremented by the number of
// bytes read. If the file offset is at or past the end of file, no
// bytes are read, and read() returns zero.
n, err = f1.Read(buf[:cap(buf)])
fmt.Println("read: ", n, err)
buf = buf[:n]
fmt.Println("buffer:", len(buf), buf)
if err != nil {
if err != io.EOF {
fmt.Println(n, err)
return
}
}
// The file offset is set to the start-of-file.
s, err = f1.Seek(0, io.SeekStart)
if err != nil {
fmt.Println(s, err)
return
}
fmt.Println("offset:", s)
// the read operation commences at the
// file offset, and the file offset is incremented by the number of
// bytes read. If the file offset is at or past the end of file, no
// bytes are read, and read() returns zero.
n, err = f1.Read(buf[:cap(buf)])
fmt.Println("read: ", n, err)
buf = buf[:n]
fmt.Println("buffer:", len(buf), buf)
if err != nil {
if err != io.EOF {
fmt.Println(n, err)
return
}
}
}
Playground :https://play.golang.org/p/hPUn1ltKP2t
输出:
offset: 0
write: 12 <nil>
offset: 12
read: 0 EOF
buffer: 0 []
offset: 0
read: 8 <nil>
buffer: 8 [115 111 109 101 32 99 111 110]
关于go - 为什么 f1.Read(buf) 没有读出内容到 buf?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49095867/
为什么 naam 输出(NULL)? (抱歉,我知道这是基本的东西,但我是 plist 的新手) 这是plist: 方法如下: - (id) init { self = [super init]; i
我正在使用这个问题的答案中描述的方法向帧缓冲区对象绘制笔触: opengl - blending with previous contents of framebuffer 此方法正确 alpha -
我想将 xml 文件读出到文本 block 中,用户可以在文本 block 中编辑此文本并将附加更改应用回 xml 文件...我目前被卡住了。这是我到目前为止所做的: private void
我需要从我的网络应用程序中的任何 Controller 读出所有可用的操作。这样做的原因是一个授权系统,我需要为用户提供一个允许操作的列表。 例如。: 用户 xyz 具有执行显示、列表、搜索操作的权限
我有一个包含城市区域的 KML 文件,并想用 Javascript 将其读出,以便在 map 上显示这些叠加层(多边形)(Google Maps API v.3)此外,我想从 KML 文件中保存 Ge
我尝试将 onClick 函数从图像复制到 span 对象。但我不明白。 我已经直接使用 onClick=img.onClick、onClick=new Function(img.onClick) 等
我正在考虑使用 Javascript 自动将 border-radius、transform、box-shadow 等 CSS3 属性转换为它们的浏览器特定对应物。 我做了一些研究,发现您可以迭代通过
我有一个关于从 XML 文件读取的问题。 我的 XML 文件: 我的代码: rapidxml::xml_document<> doc; r
我正在为 dwm 构建一个状态栏,我想通过终端读出未读邮件数(使用 grep、sed 或 fopen 作为文件)并通过 fopen/popen 获取它。 我使用的是 ubuntu/dwm/thunde
我尝试用 C# 读出 WMI 数据。我使用 System.Management 命名空间。对于大多数 WMI 查询,它工作得很好。但是,当我尝试从 Win32_PerfFormattedData_Tc
我想使用 Blender 本身的脚本模式读出 Blender 对象的自定义属性。到目前为止,我发现只能读出您在脚本模式下自己创建的自定义属性。但是我想读出我自己标记的自定义属性。这意味着我没有要使用的
我正在尝试读出包含如下数据的文本文件: 1 1 34.5 12.5 1 2 65.3 23.6 1 3 94.3 12.3 依此类推,两个整数后跟两个坐标,冲洗并重复。我使用这段代码(我真的不太懂编程
我想知道如何读出 mp3 歌曲的持续时间。如果我是对的,它不是 ID3 标签,所以我想我必须以某种方式计算它?对于其余的 ID3 标签,我正在使用这个库: http://javamusictag.so
在 iOS 中使用 VoiceOver,当查看分段 Controller 之类的东西时,VoiceOver 会读取分段及其索引,即“已选择:某事:4 之 2”。 我有一个包含几个按钮的自定义 UIVi
我正在尝试从 Microsoft EDGE 浏览器读出标题和 URL。最好使用 System.Windows.Automation 来执行此操作,因为代码库已经使用它来解决其他问题。 可以通过 Sys
从顶部滚动 473 像素后,我有一个显示/隐藏菜单栏。现在我想通了,在其他页面上我需要以不同的 px 偏移量显示/隐藏它(例如,因为顶部的图片更大)。 所以理论上,当我滚动“ anchor ”时,jQ
我是一名优秀的程序员,十分优秀!