import 'package:libac_flutter/nbt/Stream.dart'; import 'package:libac_flutter/nbt/Tag.dart'; import 'package:libac_flutter/nbt/impl/CompoundTag.dart'; class NbtIo { static ByteLayer _io = ByteLayer(); // Handle various helper functions here! static Future _read(String file) async { _io = ByteLayer(); await _io.readFromFile(file); } // This function will read the file and check if it is infact gzipped static Future read(String file) async { await _read(file); if (_io.readByte() == TagType.Compound.byte) { _io.resetPosition(); return Tag.readNamedTag(_io) as CompoundTag; } else { // Is likely gzip compressed return readCompressed(file); } } static Future readCompressed(String file) async { _io = ByteLayer(); await _io.readFromFile(file); await _io.decompress(); _io.resetPosition(); return Tag.readNamedTag(_io) as CompoundTag; } static Future write(String file) async { await _io.writeToFile(file); } static Future writeCompressed(String file) async { await _io.compress(); await _io.writeToFile(file); } static ByteLayer getStream() { return _io; } }