binary file r/w

This commit is contained in:
randogoth 2026-06-07 16:18:52 +03:00
parent 8c165edc0c
commit c14de9c3e9
2 changed files with 38 additions and 0 deletions

View file

@ -1,4 +1,5 @@
import 'dart:io';
import 'dart:typed_data';
import 'package:actors/actors.dart';
sealed class FileMessage {
@ -16,6 +17,17 @@ final class SaveFile extends FileMessage {
const SaveFile(this.path, this.content);
}
final class LoadBinaryFile extends FileMessage {
final String path;
const LoadBinaryFile(this.path);
}
final class SaveBinaryFile extends FileMessage {
final String path;
final Uint8List bytes;
const SaveBinaryFile(this.path, this.bytes);
}
sealed class FileResult {
const FileResult();
}
@ -29,11 +41,20 @@ final class FileSaved extends FileResult {
const FileSaved();
}
final class BinaryFileLoaded extends FileResult {
final Uint8List bytes;
const BinaryFileLoaded(this.bytes);
}
class FileActor with Handler<FileMessage, FileResult> {
@override
Future<FileResult> handle(FileMessage message) => switch (message) {
LoadFile(:final path) => File(path).readAsString().then(FileLoaded.new),
SaveFile(:final path, :final content) =>
File(path).writeAsString(content).then((_) => const FileSaved()),
LoadBinaryFile(:final path) =>
File(path).readAsBytes().then(BinaryFileLoaded.new),
SaveBinaryFile(:final path, :final bytes) =>
File(path).writeAsBytes(bytes).then((_) => const FileSaved()),
};
}