1 回答

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
在大多數(shù)文件系統(tǒng)上,您不能從文件的開(kāi)頭或中間“剪切”出一部分,您只能在末尾截?cái)嗨?/p>
最簡(jiǎn)單的實(shí)現(xiàn)你想要的是打開(kāi)源文件,跳過(guò)你想要?jiǎng)冸x的部分(使用搜索),打開(kāi)目標(biāo)文件并簡(jiǎn)單地從源文件復(fù)制到目標(biāo)文件。
要查找(跳過(guò)),請(qǐng)使用File.Seek()
.?要在文件之間復(fù)制,請(qǐng)使用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)
請(qǐng)注意,上面的代碼將在新文件中獲取您想要的結(jié)果文件。如果您希望“新”成為舊文件(意味著您不想要不同的文件),則在上述操作之后(如果成功)刪除原始文件并將新文件重命名為舊文件。
這就是您執(zhí)行最后一步的方法:
if err := os.Remove("source.txt"); err != nil {
? ? panic(err)
}
if err := os.Rename("dest.txt", "source.txt"); err != nil {
? ? panic(err)
}
- 1 回答
- 0 關(guān)注
- 217 瀏覽
添加回答
舉報(bào)