Как перезаписать первые 256 байт в файле на golang?

Пользователь

от terrance , в категории: Общие вопросы , год назад

Как перезаписать первые 256 байт в файле на golang?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp Pocket

1 ответ

Пользователь

от laverna , год назад

@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.