44 lines
1.2 KiB
Dart
44 lines
1.2 KiB
Dart
import 'dart:io';
|
|
|
|
import 'Stream.dart';
|
|
import 'Tag.dart';
|
|
import 'impl/CompoundTag.dart';
|
|
|
|
class SnbtIo {
|
|
static Future<void> 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<Tag> 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<Tag> readFromString(String data) async {
|
|
return Tag.readStringifiedNamedTag(StringReader(data));
|
|
}
|
|
}
|