@terrance
Чтобы перезаписать первые 256 байт в файле на Go, вы можете использовать следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
package main import ( "fmt" "os" ) func main() { filePath := "file.txt" newData := "New data to be written" file, err := os.OpenFile(filePath, os.O_RDWR, 0644) if err != nil { fmt.Println(err) return } defer file.Close() // Создаем буфер для чтения первых 256 байт buffer := make([]byte, 256) n, err := file.Read(buffer) if err != nil { fmt.Println(err) return } // Перемещаем позицию указателя обратно в начало файла _, err = file.Seek(0, 0) if err != nil { fmt.Println(err) return } // Записываем новые данные в файл _, err = file.WriteString(newData) if err != nil { fmt.Println(err) return } // Если новые данные меньше 256 байт, дополняем их нулями if len(newData) < n { zeroBytes := make([]byte, n-len(newData)) _, err = file.Write(zeroBytes) if err != nil { fmt.Println(err) return } } fmt.Println("Перезапись первых 256 байт файла выполнена успешно.") } |
В этом примере мы открываем файл с помощью функции os.OpenFile
с флагом os.O_RDWR
, чтобы позволить чтение и запись. Затем мы читаем первые 256 байт файла в буфер с помощью функции file.Read
. После этого мы перемещаем позицию указателя обратно в начало файла с помощью функции file.Seek
. Далее мы записываем новые данные в файл с помощью функции file.WriteString
. Если новые данные короче 256 байт, мы дополняем их нулевыми байтами с помощью функции file.Write
.