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 關注
- 232 瀏覽
添加回答
舉報