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

Функция tar.NewWriter

Функция tar.NewWriter создает новый Writer, который используется для записи TAR-архивов. В качестве аргумента функция принимает интерфейс io.Writer - например, файл или буфер, в который будет записан архив. Возвращает функция указатель на tar.Writer, через который можно последовательно добавлять файлы в архив.

Синтаксис

tar.NewWriter(w io.Writer) *tar.Writer

Пример

Давайте создадим TAR-архив и запишем в него один файл:

package main import ( "archive/tar" "bytes" "fmt" "os" ) func main() { // Создаем буфер для хранения архива buf := new(bytes.Buffer) // Создаем tar.Writer tw := tar.NewWriter(buf) defer tw.Close() // Создаем заголовок для файла hdr := &tar.Header{ Name: "file.txt", Mode: 0600, Size: int64(len("Hello, TAR!")), } // Записываем заголовок if err := tw.WriteHeader(hdr); err != nil { fmt.Println("Error writing header:", err) return } // Записываем содержимое файла if _, err := tw.Write([]byte("Hello, TAR!")); err != nil { fmt.Println("Error writing content:", err) return } // Закрываем writer tw.Close() fmt.Printf("Archive size: %d bytes\n", buf.Len()) }

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

"Archive size: 512 bytes"

Пример

Давайте создадим TAR-архив с несколькими файлами:

package main import ( "archive/tar" "bytes" "fmt" ) func main() { buf := new(bytes.Buffer) tw := tar.NewWriter(buf) defer tw.Close() // Файл 1 hdr1 := &tar.Header{ Name: "file1.txt", Mode: 0644, Size: int64(len("Content 1")), } tw.WriteHeader(hdr1) tw.Write([]byte("Content 1")) // Файл 2 hdr2 := &tar.Header{ Name: "file2.txt", Mode: 0644, Size: int64(len("Content 2")), } tw.WriteHeader(hdr2) tw.Write([]byte("Content 2")) tw.Close() fmt.Printf("Archive contains 2 files, size: %d bytes\n", buf.Len()) }

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

"Archive contains 2 files, size: 1024 bytes"

Пример

Давайте создадим TAR-архив и запишем его непосредственно в файл:

package main import ( "archive/tar" "fmt" "os" ) func main() { // Создаем файл для архива f, err := os.Create("archive.tar") if err != nil { fmt.Println("Error creating file:", err) return } defer f.Close() // Создаем tar.Writer с файлом в качестве io.Writer tw := tar.NewWriter(f) defer tw.Close() // Добавляем файл в архив hdr := &tar.Header{ Name: "readme.txt", Mode: 0644, Size: int64(len("This is a README file")), } if err := tw.WriteHeader(hdr); err != nil { fmt.Println("Error writing header:", err) return } if _, err := tw.Write([]byte("This is a README file")); err != nil { fmt.Println("Error writing content:", err) return } fmt.Println("Archive created successfully") }

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

"Archive created successfully"

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

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