РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1330 of 1593 menu

Тип tar.Header

Тип tar.Header представляет собой структуру, хранящую метаданные заголовка файла в tar-архиве. Он используется при записи файлов в архив с помощью tar.Writer и при чтении файлов из архива с помощью tar.Reader. Структура содержит поля для имени файла, его размера, прав доступа, времени модификации, типа файла и других атрибутов.

Синтаксис

type Header struct { Name string Mode int64 Uid int Gid int Size int64 ModTime time.Time Typeflag byte Linkname string Uname string Gname string Devmajor int64 Devminor int64 AccessTime time.Time ChangeTime time.Time Xattrs map[string]string }

Пример

Создадим заголовок для файла и запишем его в tar-архив:

package main import ( "archive/tar" "bytes" "fmt" "os" "time" ) func main() { var buf bytes.Buffer tw := tar.NewWriter(&buf) header := &tar.Header{ Name: "example.txt", Mode: 0644, Size: 11, ModTime: time.Now(), Uid: os.Getuid(), Gid: os.Getgid(), } err := tw.WriteHeader(header) if err != nil { fmt.Println("Error writing header:", err) return } content := []byte("hello world") _, err = tw.Write(content) if err != nil { fmt.Println("Error writing content:", err) return } tw.Close() fmt.Println("Archive created successfully") }

Результат выполнения кода:

"Archive created successfully"

Пример

Прочитаем заголовки файлов из существующего tar-архива:

package main import ( "archive/tar" "fmt" "io" "os" ) func main() { file, err := os.Open("example.tar") if err != nil { fmt.Println("Error opening archive:", err) return } defer file.Close() tr := tar.NewReader(file) for { header, err := tr.Next() if err == io.EOF { break } if err != nil { fmt.Println("Error reading header:", err) return } fmt.Printf("Name: %s, Size: %d, Mode: %04o\n", header.Name, header.Size, header.Mode) } }

Результат выполнения кода (пример вывода):

"Name: example.txt, Size: 11, Mode: 0644" "Name: another.txt, Size: 20, Mode: 0644"

Пример

Создадим заголовок для директории с установкой прав доступа:

package main import ( "archive/tar" "bytes" "fmt" "time" ) func main() { var buf bytes.Buffer tw := tar.NewWriter(&buf) header := &tar.Header{ Name: "mydir/", Mode: 0755, Typeflag: tar.TypeDir, ModTime: time.Now(), Uid: 1000, Gid: 1000, Uname: "user", Gname: "group", } err := tw.WriteHeader(header) if err != nil { fmt.Println("Error writing header:", err) return } tw.Close() fmt.Println("Directory header created successfully") }

Результат выполнения кода:

"Directory header created successfully"

Смотрите также

  • тип tar.Reader,
    который позволяет читать файлы из tar-архива
  • тип tar.Writer,
    который позволяет записывать файлы в tar-архив
  • функцию tar.NewReader,
    которая создает новый Reader для чтения архива
  • функцию tar.NewWriter,
    которая создает новый Writer для записи архива
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить