import 'dart:io'; import 'Stream.dart'; import 'Tag.dart'; import 'impl/CompoundTag.dart'; class SnbtIo { static Future writeToFile(String file, CompoundTag tag) async { File handle = File(file); if (handle.existsSync()) handle.deleteSync(); // Ensure we flush the file to 0 bytes StringBuilder builder = StringBuilder(); Tag.writeStringifiedNamedTag(tag, builder, 0); await handle.writeAsString(builder.toString()); } static Future readFromFile(String file) async { File fi = File(file); String data = await fi.readAsString(); StringReader reader = StringReader(data); Tag tag = CompoundTag(); try { tag = Tag.readStringifiedNamedTag(reader); } catch (E, stack) { print("FATAL ERROR OCCURED AT LOCATION:\n${reader.getSnapshot()}"); print(E); print(stack); } return tag; } static String writeToString(CompoundTag tag) { StringBuilder builder = StringBuilder(); Tag.writeStringifiedNamedTag(tag, builder, 0); return builder.toString(); } static Future readFromString(String data) async { return Tag.readStringifiedNamedTag(StringReader(data)); } }