tar 0.1.0-nullsafety.0 copy "tar: ^0.1.0-nullsafety.0" to clipboard
tar: ^0.1.0-nullsafety.0 copied to clipboard

outdated

Memory-efficient, streaming implementation of the tar file format

tar #

Build status

This package provides stream-based readers and writers for tar files.

When working with large tar files, this library consumes considerably less memory than package:archive, although it is slightly slower.

Reading #

To read entries from a tar file, use

import 'dart:io';
import 'package:tar/tar.dart' as tar;

Future<void> main() async {
  final tarFile = File('file.tar')
       .openRead()
       .transform(tar.reader);

  await for (final entry in tarFile) {
    print(entry.name);
    print(await entry.transform(utf8.decoder).first);
  }
}

To read .tar.gz files, transform the stream with gzip.decoder first.

Writing #

You can write tar files into a StreamSink<List<int>>, such as an IOSink:

import 'dart:io';
import 'package:tar/tar.dart' as tar;

Future<void> main() async {
  final output = File('test.tar').openWrite();

  await Stream<tar.Entry>.value(
    tar.MemoryEntry(
      tar.Header(
        name: 'hello.txt',
        mode: int.parse('644', radix: 8),
      ),
      utf8.encode('Hello world'),
    ),
  ).pipe(tar.WritingSink(output));
}

Note that tar files are always written in the format defined by the POSIX.1-2001 specification (--format=posix in GNU tar).

Features #

  • Supports ustar archives
  • Supports extended pax headers for long file or link names
26
likes
0
pub points
90%
popularity

Publisher

verified publishersimonbinder.eu

Memory-efficient, streaming implementation of the tar file format

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

charcode, synchronized

More

Packages that depend on tar