fileOverWrite function

bool fileOverWrite(
  1. File file, {
  2. bool? isFileExist,
  3. FileWriteLevel level = FileWriteLevel.medium,
  4. bool autoDelete = true,
})

Overwrite the content of a file based on the specified level pattern.

I/O exceptions during the write operation are propagated to the caller.
level: Fill content: low for zeros, medium for bits, high for random. Defaults to medium.

Implementation

bool fileOverWrite(
  File file, {
  bool? isFileExist,
  FileWriteLevel level = FileWriteLevel.medium,
  bool autoDelete = true, // auto delete after save
}) {
  isFileExist ??= file.existsSync();
  if (!isFileExist) return false;

  final fileSize = file.lengthSync();
  final random = Random.secure();

  // fixed-length list
  List<int> buffer = switch (level) {
    FileWriteLevel.low => List<int>.filled(fileSize, 0),
    FileWriteLevel.medium => List<int>.generate(fileSize, (i) => i % 2),
    _ => List<int>.generate(fileSize, (i) => random.nextInt(256)),
  };

  file.writeAsBytesSync(buffer, flush: true);
  buffer = []; // use dart gc

  if (autoDelete) file.deleteSync();

  return true;
}