1 回答
TA贡献1799条经验 获得超9个赞
在大多数文件系统上,您不能从文件的开头或中间“剪切”出一部分,您只能在末尾截断它。
最简单的实现你想要的是打开源文件,跳过你想要剥离的部分(使用搜索),打开目标文件并简单地从源文件复制到目标文件。
要查找(跳过),请使用File.Seek()
. 要在文件之间复制,请使用io.Copy()
.
这是可以做到的:
fin, err := os.Open("source.txt")
if err != nil {
panic(err)
}
defer fin.Close()
fout, err := os.Create("dest.txt")
if err != nil {
panic(err)
}
defer fout.Close()
// Offset is the number of bytes you want to exclude
_, err = fin.Seek(10, io.SeekStart)
if err != nil {
panic(err)
}
n, err := io.Copy(fout, fin)
fmt.Printf("Copied %d bytes, err: %v", n, err)
请注意,上面的代码将在新文件中获取您想要的结果文件。如果您希望“新”成为旧文件(意味着您不想要不同的文件),则在上述操作之后(如果成功)删除原始文件并将新文件重命名为旧文件。
这就是您执行最后一步的方法:
if err := os.Remove("source.txt"); err != nil {
panic(err)
}
if err := os.Rename("dest.txt", "source.txt"); err != nil {
panic(err)
}
- 1 回答
- 0 关注
- 164 浏览
添加回答
举报