tar 2.0.0 tar: ^2.0.0 copied to clipboard
Memory-efficient, streaming implementation of the tar file format
import 'dart:convert';
import 'dart:io';
import 'package:tar/tar.dart';
Future<void> main() async {
// Start reading a tar file
final reader = TarReader(File('reference/gnu.tar').openRead());
while (await reader.moveNext()) {
final header = reader.current.header;
print('${header.name}: ');
// Print the output if it's a regular file
if (header.typeFlag == TypeFlag.reg) {
await reader.current.contents.transform(utf8.decoder).forEach(print);
}
}
// We can write tar files to any stream sink like this:
final output = File('test.tar').openWrite();
await Stream<TarEntry>.value(
TarEntry.data(
TarHeader(
name: 'hello_dart.txt',
mode: int.parse('644', radix: 8),
userName: 'Dart',
groupName: 'Dartgroup'),
utf8.encode('Hello world'),
),
)
// transform tar entries back to a byte stream
.transform(tarWriter)
// and then write that to the file
.pipe(output);
}