write method
Implementation
@override
Future<String> write({
required String fileName,
required String contents,
String? mimeType,
}) async {
final directory = Directory(directoryPath);
await directory.create(recursive: true);
final safeName = sanitizeExportFileName(fileName);
var destination = File(path_util.join(directory.path, safeName));
var counter = 1;
final extension = path_util.extension(safeName);
final base = path_util.basenameWithoutExtension(safeName);
while (await destination.exists()) {
destination = File(
path_util.join(directory.path, '${base}_$counter$extension'),
);
counter += 1;
}
final temporary = File('${destination.path}.${const Uuid().v4()}.tmp');
try {
await temporary.writeAsString(
contents,
encoding: utf8,
flush: true,
);
await temporary.rename(destination.path);
} finally {
if (await temporary.exists()) await temporary.delete();
}
return destination.path;
}